值不为null时在ASP.NET MVC视图中输出值的干净方法

值不为null时在ASP.NET MVC视图中输出值的干净方法,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,有没有更好的方法来编写下面的代码?我有很多类似的块,这使得Viewpage中的代码非常混乱 只有在满足某些条件时才需要输出带有相关标签的数据值,如果该值不为null,则几乎总是这样 我所能想到的选项是使用response.write,以尽量减少ASP脚本标记的使用,或者格式化网页,这样标签就会以适当的n/a类型值显示 <% if (myData.Balance != null) { %> Balance: <%= String

有没有更好的方法来编写下面的代码?我有很多类似的块,这使得Viewpage中的代码非常混乱

只有在满足某些条件时才需要输出带有相关标签的数据值,如果该值不为null,则几乎总是这样

我所能想到的选项是使用response.write,以尽量减少ASP脚本标记的使用,或者格式化网页,这样标签就会以适当的n/a类型值显示

<% if (myData.Balance != null)
{ %>                       
   Balance: <%= String.Format("{0:C}", (myData.Balance))%>                        
<% } %>

余额:
如果使用中的类,则可以显式控制视图中空值的输出,而无需处理内联脚本标记。这本身不会帮助您删除绑定到该值的标签,但如果该值为null,至少可以让它自动替换输出

[DisplayFormat(NullDisplayText = "N/A", DataFormatString = "{0:c}")]
public double? Price { get; set; }

<%=Html.DisplayFor(m => m.Price)%>
[DisplayFormat(NullDisplayText=“N/A”,DataFormatString=“{0:c}”)]
公共双人房?价格{get;set;}
m、 价格)%>
使用上述代码,如果值为空,它将自动显示“N/A”,否则它将使用默认货币格式显示值

作为替代方案,如果您也想删除标签,并且不想在视图中处理脚本标记,您可以制作自己的HtmlHelper,它采用与
Html.DisplayFor(expression)
相同格式的表达式,然后返回
Html.LabelFor(expression)
Html.DisplayFor的组合输出(表达式)
当且仅当映射到该表达式的值不为null时。

如果在格式字符串中插入“Balance”,并使用
Response.Write
,它最终看起来更干净,我认为:

<% if (myData.Balance != null) 
       Response.Write(String.Format("Balance: {0:C}", myData.Balance)) %>

请原谅我的无知如果不是这样的话,这只是一个猜测:你能用一个空字符串“”代替
NullDisplayText
的“N/a”,并将标签放在
DataFormatString
(例如“Balance:{0:c}”)中,实现O.P.的要求吗?