2015-08-13 2 views
5

У меня возникла очень странная проблема, из-за которой я не могу найти причину.MVC Html атрибут рендеринга атрибутов данных

В моем приложении ASP.NET MVP (.net4.0/MVC4) Я разглаживаю атрибуты данных html внутри некоторого элемента html, чтобы затем использоваться в JavaScript.

Так что в приложении у меня есть модель, например.

public class MyModel{ 
    public bool MyFlag { get; set; } 
} 

Я затем передать эту модель через на простой вид страницы MVC и делает логическое значение в атрибуте данных HTML, например

@model MyProject.MyModel 

<a href="#" data-is-flagged="@Model.MyFlag">Click Me</a> 

Теперь при запуске проекта на местном уровне HTML, визуализируется как:

<a href="#" data-is-flagged="True">Click Me</a> 

Однако при работе на сервере, HTML отображается как:

<a href="#" data-is-flagged="data-is-flagged">Click Me</a> 

Сначала я подумал что, возможно, логическое значение не задавалось каким-то образом, поэтому я добавил его к элементу Click Me @Model.MyFlag, который отображается как Click Me True. Теперь я подозревал, что это может быть связано с режимом Debug vs Release, однако после игры с этим это не имело никакого значения.

Моим решением было изменить код для вывода логического значения в виде строкового значения, например. data-is-flagged="@Model.MyFlag.ToString()", который затем отображает то же самое локально и на сервере.

Любые идеи, в чем причина этого?

+0

Используете ли вы тот же браузер при тестировании локально и тестируете развернутую версию? – jadarnel27

+0

@ jadarnel27 Да, тот же браузер. Также попробовали альтернативные браузеры. –

+3

Возможно ли, что у вас есть какая-то другая версия механизма просмотра Razor, работающая локально и сервер? Поведение, которое вы видите на сервере, выглядит как функция атрибутов условных html, введенных в Razor 2. – Peter

ответ

3

цитирую ответ от another website:

Это является результатом условных атрибутов, который был введен в веб-страниц 2 (MVC 4): http://www.mikesdotnetting.com/Article/201/Cleaner-Conditional-HTML-Attributes-In-Razor-Web-Pages
Два варианта: вернуться к веб-страницы 1 (MVC 3) или отредактировать все файлы, связанные с .

Если значение применяется к атрибуту true, результат является то, что атрибут повторяется (это полезно для тегов option внутри select, например). Если установлено значение false, ничего не отображается (а не имя атрибута события).

Итак, в комментариях @Jamie и @Peter у вас может быть другая версия движка Razor в вашей среде разработки.

+1

Это похоже на проблему. Спасибо за это. –

Смежные вопросы