有没有更好的方法来编写下面的代码?我有相当多的块,这使得Viewpage中的代码非常混乱。
只有在满足某些条件时才需要输出带有相关标签的数据值,如果该值不为空,则几乎总是如此。
我能想到的选项是使用response.write来最小化ASP脚本标签的使用,或者格式化网页,使标签以适当的n / a类型值显示。
<% if (myData.Balance != null)
{ %>
Balance: <%= String.Format("{0:C}", (myData.Balance))%>
<% } %>
答案 0 :(得分:8)
如果您使用DisplayFormatAttribute中的System.ComponentModel.DataAnnotations类,则可以在视图中显式控制空值的输出,而无需处理内联脚本标记。本身不会帮助您删除与值绑定的标签,但如果值为null,您至少可以自动替换输出。
[DisplayFormat(NullDisplayText = "N/A", DataFormatString = "{0:c}")]
public double? Price { get; set; }
<%=Html.DisplayFor(m => m.Price)%>
使用上面的代码,如果值为null,它将自动显示“N / A”,否则它将使用默认货币格式显示该值。
作为替代方案,如果您也想要删除标签并且不想在视图中处理脚本标记,您可以创建自己的HtmlHelper,它采用相同格式Html.DisplayFor(expression)
的表达式,然后当且仅当映射到该表达式的值不为null时,才返回Html.LabelFor(expression)
和Html.DisplayFor(expression)
的组合输出。
答案 1 :(得分:2)
如果您在格式字符串中粘贴“余额”并使用Response.Write
,我认为最终会看起来更清晰:
<% if (myData.Balance != null)
Response.Write(String.Format("Balance: {0:C}", myData.Balance)) %>