Я знаю, что это действительно старая версия, но у меня была такая же проблема, и я обнаружил, что все эти варианты довольно уродливы, особенно если учесть, что если первое условие ложно, а второе верно, вы быостаться с чем-то вроде:
class=" className"
(обратите внимание на пробел перед именем класса)
Я создал HtmlHelper для решения моей проблемы:
public static IHtmlString ClassString(this HtmlHelper helper, Dictionary<string, bool> classes)
{
return new HtmlString(string.Join(" ", classes.Where(c => c.Value).Select(c => c.Key)));
}
И длясогласованность (если требуется один условный класс):
public static IHtmlString ClassString(this HtmlHelper helper, string classString, bool condition)
{
return new HtmlString(condition ? classString : "");
}
Затем их можно использовать следующим образом:
@{
var classes = new Dictionary<string, bool>() {
{ "january", month == Month.January },
{ "tuesday", today == Day.Tuesday }
}
}
<div class="@Html.ClassString(classes)">...</div>
// OR
@Html.TextBoxFor(model => model.UserName, new { @class = Html.ClassString(classes) })
// OR (for a single condition)
<div class="@Html.ClassString("january", month == Month.January)">...</div>
// OR
@Html.TextBoxFor(model => model.UserName, new { @class = Html.ClassString("january", month == Month.January) })