Очевидный способ к выходным значениям в ASP.NET Представления MVC, когда значение не является нулевым

Существует ли лучший способ написать код ниже? У меня есть довольно много блоков, которые подобны, и это делает код в Viewpage очень грязным для работы с.

Значение данных со связанной маркировкой только должно быть произведено, когда определенные условия соблюдены, который является почти всегда, если значение не является нулевым.

Опции я могу думать, состоят в том, чтобы использовать response.write, чтобы по крайней мере минимизировать использование тегов script ASP, или отформатировать веб-страницу - такой способ, которым маркировка отображается с соответствующим значением типа n/a.

<% if (myData.Balance != null)
{ %>                       
   Balance: <%= String.Format("{0:C}", (myData.Balance))%>                        
<% } %>
8
задан Swoop 21 May 2010 в 20:31
поделиться

2 ответа

Если вы используете класс DisplayFormatAttribute в System.ComponentModel.DataAnnotations вы можете явно управлять выводом нулевых значений в вашем представлении, не имея дело со встроенными тегами скрипта. Само по себе это не поможет вам удалить метки, привязанные к значению, но вы, по крайней мере, можете заставить его автоматически заменять вывод, если значение равно нулю.

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

<%=Html.DisplayFor(m => m.Price)%>

В приведенном выше коде автоматически отображается «N / A», если значение равно нулю, в противном случае значение будет отображаться в денежном формате по умолчанию.

В качестве альтернативы, если вы также хотите удалить метку и не хотите иметь дело с тегами скрипта в вашем представлении, вы можете создать свой собственный HtmlHelper, который принимает выражение в том же формате Html.DisplayFor ( выражение) , а затем возвращает объединенный вывод Html.LabelFor (выражение) и Html.DisplayFor (выражение) тогда и только тогда, когда значение, сопоставленное с этим выражением, не нулевой.

8
ответ дан 5 December 2019 в 17:35
поделиться

Если вы вставите «Баланс» в строку формата и используете Response.Write , он будет выглядеть намного чище, я думаю :

<% if (myData.Balance != null) 
       Response.Write(String.Format("Balance: {0:C}", myData.Balance)) %>
2
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: