2015-08-15 47 views
0

存在以下剃鬚刀代碼。使用Html.DisplayFor()時的較短和較少冗長條件

<p>@Html.DisplayFor(modelitem => item.Price)</p> 

現在,當價格爲0時,我需要顯示文本「Free」。所以我做了以下操作。

<p> 
    @(item.Price == 0 ? "Free" : string.Format("{0:$0.00}", item.Price)) 
</p> 

它看起來很冗長。有沒有更好的方法來做到這一點?

+0

爲什麼不使用顯示模板? –

+0

如果你使用視圖模型,你可以使屬性爲空,並使用'[DisplayFormat]'屬性 –

+0

@ dc7a9163d9的'NullDisplayText'屬性,它工作嗎?它是否生成該項目的HTML? –

回答

0

在模型中嘗試[DisplayFormat(NullDisplayText = "FREE")]

+0

我不想改變模型,因爲我想在其他地方顯示0(該字段不能爲空)爲0。 – ca9163d9

1

您可以使用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") 
0

你可以寫ExtensionMethods for htmlHelper檢查您的情況並運行適當的DisplayFor()