存在以下剃鬚刀代碼。使用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? –