Вы можете использовать встроенные стили, чтобы добавить стили custome в теги <option>
.
Например: <option style="font-weight:bold;color:#09C;">Option 1</option>
Это применит стили только к этому конкретному элементу <option>
.
Затем вы можете использовать немного магии javascript для применения встроенных стилей ко всем элементам <option>
в теге <select>
, например:
var select = $(document).getElementById('#select-element-id')
var option = select.children('#option-element-id')
option.css('font-weight', 'bold')
option.css('font-size', '24px')
Вы также можете использовать <option value="" disabled> <br> </option>
, чтобы добавить разрыв строки между варианты.
По вашему мнению:
@(item.isTrue?"Yes":"No")
Вы можете использовать пользовательский метод расширения html, например:
@Html.YesNo(item.IsTrue)
Вот код для этого:
public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo)
{
var text = yesNo ? "Yes" : "No";
return new MvcHtmlString(text);
}
Таким образом, вы можете использовать его на протяжении всей сайт с одной строкой кода Razor.
Вы можете использовать дескриптор реквизита по своей причине:
public bool? IsActive { get; set; }
public string IsActiveDescriptor => IsActive.HasValue && IsActive ? "Yes" : "NO";
В вашей модели напишите что-то вроде этого:
public Nullable<bool> Active
{
get;
set;
}
public string ISActive
{
get
{
return (bool)this.Active ? "Yes" : "NO";
}
}
Active является логическим свойством, мы создаем свойство ISActive для чтения его значения и показываем соответствующее сообщение пользователю.
Чтобы расширить ответ DigitalD, вы можете рассмотреть его в виде метода расширения:
public static string ToFriendlyString(this Boolean b)
{
return b ? "Yes" : "No";
}
Затем вы можете использовать его повсеместно:
@item.IsTrue.ToFriendlyString()
Уже немного поздно, но ...
Одним из полезных методов, пропущенных другими ответами, является метод Custom DisplayTemplate. Поместив этот код:
@model bool
<p>@{Model ? "Yes" : "No"}</p>
в частичное представление (возможно, YesNo.cshtml
) в папке «Шаблоны отображения» (/Views/Shared/DisplayTemplates
). Затем, по вашему мнению, используйте эту строку:
@Html.Display(item.isTrue,"YesNo")
где «YesNo» - это то, что вы назвали своим частичным представлением, минус расширение .cshtml .
Добавляя вторую строку (templateName
), вы указываете DisplayExtensions отображать логическое значение с вашим пользовательским шаблоном, а не метод по умолчанию (флажок).
Этот метод может быть не самым простым в этой ситуации, но он пригодится в более сложных ситуациях (например, например, в настраиваемом календаре для выбора дат)
Если вы спешите или используете целое число вместо бита. (Я делаю это в случае, если у вас есть третий вариант позже, и ваш yes/no
становится yes, no, octopus
, как всегда делает мой, вот простой и быстрый грязный способ ... объявить вашу переменную в верхней части Razor view:
@model MyModel
@using My.Models;
@{
ViewBag.Title = "Index";
ViewBag.ReturnUrl = "";
string Active = ""; //This will hold your "Yes" or "No"
}
По мере того, как вы просматриваете свои элементы ... Следующий код установит для вашей строковой переменной Active
значение «Да» или «Нет», а затем вы просто отобразите ее как есть на страница (без разметки @Html.DisplayFor(...)
.
@{if (item.Active == 0){Active = "No";}else{Active = "Yes";}}
@Active
Если вы еще не знаете, окружение всего оператора «если» с @{}
облегчает жизнь - нет необходимости в @
) в скобках ...
Существует решение, аналогичное @Lucas Niewohner's, взятое из Скотта по написанию .NET .
Создайте шаблон DisplayTemplate с именем YesNo.cshtml
:
@model bool
@if (Model)
{
@Html.Raw("Yes")
}
else
{
@Html.Raw("No")
}
Затем украсьте ViewModel с помощью UIHint
, чтобы подключить его:
public class foo
{
...
[UIHint="YesNo"]
public bool SomeBooleanValue { get; set; }
...
}
Теперь вы можете использовать своих помощников MVC как обычно:
...
@Html.DisplayFor (x=> x.SomeBooleanValue)
...
Вы можете сделать еще один шаг, чтобы создать EditorTemplate YesNo.cshtml
:
@model bool
@Html.DropDownList("", new SelectListItem[] { new SelectListItem() { Text = "Yes", Value = "true", Selected = Model }, new SelectListItem() { Text = "No", Value = "false", Selected = !Model }})
Этот подход особенно полезен, если вы хотите использовать ViewModel в несколько мест с последовательной реализацией, так как вам нужно только связать шаблон в одном месте.