mvc中的条件格式

Posted

技术标签:

【中文标题】mvc中的条件格式【英文标题】:Conditional formatting in mvc 【发布时间】:2012-02-29 20:32:58 【问题描述】:

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

【问题讨论】:

【参考方案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;
    

【讨论】:

有趣的想法。但它不会编译。 src 是字符串,不能转换成 MvcHtmlString。我已经使用正确的语法进行了更新。谢谢+1。【参考方案2】:

在视图中添加 if 逻辑。如果填充了公司名称,则设置类或颜色或任何您想要的方式,如果没有填充,则设置另一种方式。

【讨论】:

关注点分离发生了什么? 我有个主意。我需要一个视图模型。我会尽快发布答案 这个讨论有很多很好的评论关于如何决定你认为多少逻辑属于你=> ***.com/a/443213/138938引用Phil Haack:同意,逻辑的数量与关注点分离无关。在视图中保持逻辑最小化是一个实际问题。但是视图逻辑属于视图。 – Haacked 2009 年 1 月 14 日 16:44 我刚刚在右侧的“相关”列中注意到的另一个有用的答案=> ***.com/a/2445803/138938。 那么你最后做了什么?

以上是关于mvc中的条件格式的主要内容,如果未能解决你的问题,请参考以下文章

谷歌表格中的条件格式不适用于重复项

Excel VBA - 条件格式中的用户定义函数

Flash 中的条件日期格式

HTML 标签中的条件格式

有条件地格式化子表单中的组合框

在两个单独工作表中的两个单元格之间应用条件格式