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中的条件格式的主要内容,如果未能解决你的问题,请参考以下文章