的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;
}
}
这个想法是公司名称是填充的,它应该以黑色显示,否则它应该显示深灰色的字符串“添加公司”。
我怎么能实现这个目标?以上示例始终以灰色显示。
更新
这有两个解决方案。创建一个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));
}
答案 0 :(得分:1)
在视图中添加逻辑。如果填充公司名,则设置类或颜色或任何您想要的方式,如果不填充,则设置另一种方式。
答案 1 :(得分:1)
您可以尝试以下方法:
public static class HtmlHelpers
{
public static MvcHtmlString PlaceholderTag(this HtmlHelper helper, string src, string placeHolder)
{
const string formattedPlaceholder = "<span class=\"placeholder\">{0}</span>";
return string.IsNullOrEmpty(src) ? new MvcHtmlString(string.Format(formattedPlaceholder, src)) : src;
}
}