加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 带Razor的条件显示元素

发布时间:2020-12-15 21:03:40 所属栏目:asp.Net 来源:网络整理
导读:有没有比下面有条件地(使用剃刀)显示/隐藏元素的更聪明的方法?视图非常大,我担心维护: @if(@Model.Atendimento.PrazosEEntregas.Visivel){ div h4Prazos e entrega do servi?o/h4 @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.Pra
有没有比下面有条件地(使用剃刀)显示/隐藏元素的更聪明的方法?视图非常大,我担心维护:
@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; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读