存在以下剃须刀代码。使用Html.DisplayFor()时的较短和较少冗长条件
<p>@Html.DisplayFor(modelitem => item.Price)</p>
现在,当价格为0时,我需要显示文本“Free”。所以我做了以下操作。
<p>
@(item.Price == 0 ? "Free" : string.Format("{0:$0.00}", item.Price))
</p>
它看起来很冗长。有没有更好的方法来做到这一点?
存在以下剃须刀代码。使用Html.DisplayFor()时的较短和较少冗长条件
<p>@Html.DisplayFor(modelitem => item.Price)</p>
现在,当价格为0时,我需要显示文本“Free”。所以我做了以下操作。
<p>
@(item.Price == 0 ? "Free" : string.Format("{0:$0.00}", item.Price))
</p>
它看起来很冗长。有没有更好的方法来做到这一点?
您可以使用DisplayTemplates,所以首先在创建模板(~/Views/Shared/DisplayTemplates/Price.cshtml
):
@model float
<div>
@(Math.Abs(Model) < 1 ? "Free" : string.Format("{0:$0.00}", Model))
</div>
然后用这样的方式:
@Html.DisplayFor(p => item.Price, "Price")
你可以写ExtensionMethods for htmlHelper检查您的情况并运行适当的DisplayFor()
为什么不使用显示模板? –
如果你使用视图模型,你可以使属性为空,并使用'[DisplayFormat]'属性 –
@ dc7a9163d9的'NullDisplayText'属性,它工作吗?它是否生成该项目的HTML? –