mvc中的条件格式

时间:2012-02-29 20:32:59

标签: asp.net-mvc-3

的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));
        }

2 个答案:

答案 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;
    }
}