Doświadczyłem bardzo dziwnego problemu, którego nie mogę znaleźć.MVC różnica w renderowaniu atrybutów danych HTML
W mojej aplikacji ASP.Net MVC (.net4.0/MVC4) rozdzierałem atrybuty danych html w obrębie jakiegoś elementu html, aby następnie zastosować je w kodzie JavaScript.
Tak więc w aplikacji mam model, np.
public class MyModel{
public bool MyFlag { get; set; }
}
ja następnie przepuszczanie tego modelu przez na prostej MVC stronie widoku i nadanie wartości logicznej na atrybutu dane HTML, np
@model MyProject.MyModel
<a href="#" data-is-flagged="@Model.MyFlag">Click Me</a>
Teraz po uruchomieniu projektu lokalnie HTML jest wyświetlany jako:
<a href="#" data-is-flagged="True">Click Me</a>
jednak gdy uruchomiony na serwerze, HTML jest wyświetlany jako:
<a href="#" data-is-flagged="data-is-flagged">Click Me</a>
Na początku myślałem że może boolean nie był ustawiony w jakiś sposób, więc dodałem to do elementu Click Me @Model.MyFlag
, który renderuje jako Click Me True
. Teraz podejrzewałem, że może to ma coś wspólnego z trybem Debug vs Release, jednak po zabawie z tym nie robiło to żadnej różnicy.
Moja poprawka polegała na zmianie kodu w celu wyprowadzenia wartości logicznej jako wartości łańcuchowej, np. data-is-flagged="@Model.MyFlag.ToString()"
, który następnie renderuje się lokalnie i na serwerze.
Jakieś pomysły, jaka jest tego przyczyna?
Czy korzystasz z tej samej przeglądarki podczas testowania wersji lokalnej i testowej wdrożonej wersji? – jadarnel27
@ jadarnel27 ta sama przeglądarka. Wypróbowałem także alternatywne przeglądarki. –
Czy jest możliwe, że masz w jakiś sposób inną wersję mechanizmu wyświetlania maszyn Razor działającego lokalnie w porównaniu z serwerem? Zachowanie, które widzisz na serwerze, wygląda trochę jak funkcja atrybutów html warunkowych wprowadzona w Razorze 2. – Peter