Существует ли лучший способ написать код ниже? У меня есть довольно много блоков, которые подобны, и это делает код в Viewpage очень грязным для работы с.
Значение данных со связанной маркировкой только должно быть произведено, когда определенные условия соблюдены, который является почти всегда, если значение не является нулевым.
Опции я могу думать, состоят в том, чтобы использовать response.write, чтобы по крайней мере минимизировать использование тегов script ASP, или отформатировать веб-страницу - такой способ, которым маркировка отображается с соответствующим значением типа n/a.
<% if (myData.Balance != null)
{ %>
Balance: <%= String.Format("{0:C}", (myData.Balance))%>
<% } %>
Если вы используете класс 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 (выражение)
тогда и только тогда, когда значение, сопоставленное с этим выражением, не нулевой.
Если вы вставите «Баланс» в строку формата и используете Response.Write
, он будет выглядеть намного чище, я думаю :
<% if (myData.Balance != null)
Response.Write(String.Format("Balance: {0:C}", myData.Balance)) %>