2015-05-02 6 views
2

Я пытаюсь использовать @HTML.DisplayFor в заявлении @ForEach, но не удалось.Как использовать @ Html.DisplayFor в заявлении ForEach

Ниже мой существующий код:

@foreach (var cost in Model.CustomerCost) 
{ 
    <tr> 
     <td>@cost .CustomerName</td> 
     <td>@(cost.Cost!= 0 ? string.Format("{0:C}", cost.Cost) + " USD" : "-")</td> 
    </tr> 
} 

Однако, я пытаюсь заменить следующую строку кода

<td>@(cost.Cost!= 0 ? string.Format("{0:C}", cost.Cost) + " USD" : "-")</td> 

с

@HTMLDisplayFor 

<td>@(cost.Cost!= 0 ? Html.DisplayFor(model => model.CustomerCost[cost].Cost + "USD":"-")</td> 

Что плохого в @ HTML.DisplayFor синтаксис?

ответ

2

Чтобы получить доступ к Cost собственностью cost использования

@(cost.Cost != 0 ? Html.DisplayFor(m => cost.Cost) + "USD":"-") 

Side Примечание: Вы можете рассмотреть вопрос о внесении недвижимости Cost обнуляемым и с помощью атрибута DisplayFormat на свойстве

[DisplayFormat(DataFormatString = "{0:C}USD", NullDisplayText = "-")] 
public decimal? Cost { get; set; } 

в этом случае вам может упростить вид до

@Html.DisplayFor(m => cost.Cost) 

Обратите также внимание на формат, который вы использовали бы использовать в for цикле, где cost является индексатор

for(int i = 0; i < Model.CustomerCost.Count; i++) 
{ 
    @Html.DisplayFor(m => m.CustomerCost[i].Cost) 
} 
+0

Спасибо, за ваши объяснения. Я понимаю это сейчас. Также спасибо за сообщение об обработке с нулевым значением, используя аннотацию данных. – immirza

+0

Просто добавлено другое объяснение FYI :) –

+0

Спасибо Stephen Muecke :) – immirza

Смежные вопросы