В то время как Microsoft создала некоторую автоматическую визуализацию атрибутов html в бритве MVC4, мне потребовалось довольно много времени, чтобы выяснить, как визуализировать второй класс css для элемента, основанного на выражении условной бритвы. Я хотел бы поделиться этим с вами.
Основываясь на свойстве модели @ Model.Details, я хочу показать или скрыть элемент списка. Если есть детали, следует показать div, в противном случае он должен быть скрыт. Используя jQuery, все что мне нужно сделать, это добавить класс show или hide соответственно. Для других целей я также хочу добавить еще один класс «детали». Итак, моя наценка должна быть:
<div class="details show">[Details]</div>
или <div class="details hide">[Details]</div>
Ниже я показываю несколько неудачных попыток (в результате разметка при условии отсутствия подробностей).
Это: <div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>
,
сделает это: <div class="details" hide="">
.
Это: <div @(@Model.Details.Count > 0 ? "class=\"details show\"" : "class=\"details hide\"")>
.
сделает это: <div class=""details" hide"="">
.
Это: <div @(@Model.Details.Count > 0 ? "class='details show'" : "class='details hide'")>
сделает это: <div class="'details" hide'="">
.
Ни одна из них не является правильной наценкой.
источник
Ответы:
Я считаю, что все же может существовать и действительная логика взглядов. Но для такого рода вещей я согласен с @BigMike, его лучше разместить на модели. Сказав, что проблема может быть решена тремя способами:
Ваш ответ (при условии, что это работает, я не пробовал это):
Второй вариант:
Третий вариант:
источник
The "div" element was not closed
'ClubsModel' does not contain a definition for 'ClubsFilter' and no extension method 'ClubsFilter' accepting a first argument of type 'ClubsModel' could be found (are you missing a using directive or an assembly reference?)
Это:
окажет это:
и это наценка, которую я хочу.
источник
@Model.Details.Count > 0
. например<div class="details @(@Model.HasDetails ? "show" : "hide")">
Вы можете добавить свойство к вашей модели следующим образом:
и тогда ваш взгляд будет проще и не будет содержать никакой логики:
Это будет работать даже со многими классами и не будет отображать класс, если он равен нулю:
с 2 не нулевыми свойствами будет отображать:
если class1 равен нулю
источник
Вы можете использовать функцию String.Format для добавления второго класса на основе условия:
источник