有没有比下面有条件地(使用剃刀)显示/隐藏元素的更聪明的方法?视图非常大,我担心维护:
@if(@Model.Atendimento.PrazosEEntregas.Visivel) { <div> <h4>Prazos e entrega do serviço</h4> @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.PrazoFinalizacaoServico)) { <p>@Model.Atendimento.PrazosEEntregas.PrazoFinalizacaoServico</p> } @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.PrazoRetiradaDocumento)) { <p><strong>Prazo de retirar o documento:</strong> @Model.Atendimento.PrazosEEntregas.PrazoRetiradaDocumento</p> } @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.OndeRetirarServico)) { <p><strong>Onde retirar/receber:</strong> @Model.Atendimento.PrazosEEntregas.OndeRetirarServico</p> } @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada)) { <p><strong>Observação:</strong> @Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada</p> } </div> }
谢谢,
Hoisel
解决方法
您可以编写一个有条件地输出内容的自定义帮助程序:
public static class HtmlExtensions { public static IHtmlString FormatValue( this HtmlHelper htmlHelper,string value,string label ) { if (string.IsNullOrWhiteSpace(value)) { return MvcHtmlString.Empty; } var result = string.Format( "<p><strong>{0}</strong> {1}</p>",htmlHelper.Encode(label),htmlHelper.Encode(value) ); return new HtmlString(value); } }
然后:
@Html.FormatValue( Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada,"Observação:" )
另一种可能性是使用显示模板:
@Html.DisplayFor(x => x.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada)
@model string @if (!string.IsNullOrWhiteSpace(Model)) { <p> <strong>@ViewData.ModelMetadata.DisplayName</strong> @ViewData.TemplateInfo.FormattedModelValue </p> }
在您的视图模型上:
[DisplayName("Observação:")] [UIHint("MyTemplate")] public string ObservacaoPrazoRetirada { get; set; }