Css:
.placeHolder {
color: darkgray
}
Вид:
Компания: @ Html.PlaceholderTag (@ Model.CompanyName, "Добавить
Компания ")
Метод расширения:
public static class HtmlHelpers
{
public static string PlaceholderTag(this HtmlHelper helper, string src, string placeHolder)
{
return string.IsNullOrEmpty(src) ? placeHolder : src;
}
}
Идея состоит в том, что название компании заполнено, оно должно быть показано черным, в противном случае оно должно показывать строку «Добавить компанию» темно-серым цветом.
Как я мог этого достичь? В приведенном выше примере результаты всегда отображаются серым цветом.
UPDATE
Есть два решения для этого. Создание ViewModel, чтобы обернуть модель и добавить дополнительные флаги, и View использует условный флаг C # для флагов, чтобы решить, что делать:
Или, альтернативно, использовать метод расширения для дополнительного HTMLHelper. Эффективно MVC делает это из коробки с HTml.EditorFor () и т. Д.
public static MvcHtmlString PlaceholderTag(this HtmlHelper helper, string src, string placeHolder)
{
const string original = "<span>{0}</span>";
const string formattedPlaceholder = "<span class=\"placeHolder\">{0}</span>";
return string.IsNullOrEmpty(src) ? new MvcHtmlString(string.Format(formattedPlaceholder, placeHolder)) : new MvcHtmlString(string.Format(original, src));
}