【问题标题】:Can I reduce razor code to just few lines?我可以将剃刀代码减少到几行吗?
【发布时间】:2011-02-17 13:27:38
【问题描述】:

我可以减少这个剃须刀代码吗?

    <li>
    @{
        if (@Model.PublicationDate.HasValue) {
            @Model.PublicationDate.Value.ToString("D", new System.Globalization.CultureInfo("fr-FR")) 
        }
        else {
            @:"pas disponible"
        }
    }
    </li>

我试过这个,但它不起作用:

@{(@Model.PublicationDate.HasValue) ? (@Model.PublicationDate.Value.ToString("D")) : (@:"pas disponible")}

【问题讨论】:

    标签: c# visual-studio-2010 asp.net-mvc-3 razor


    【解决方案1】:

    您可以使用[DisplayFormat] 属性装饰您的视图模型属性:

    [DisplayFormat(DataFormatString = "{0:D}", NullDisplayText = "pas disponible")]
    public DateTime? PublicationDate { get; set; }
    

    然后你的视图就变成了:

    <li>
        @Html.DisplayFor(x => x.PublicationDate)
    </li>
    

    所以现在它被简化为一条优雅的线条。

    【讨论】:

    • 你丢失了文化信息。无论如何,它可能应该放在其他地方。
    【解决方案2】:

    我假设您可以使用?: operator 来缩短它。如果这是一个好主意是另一个问题。

    而且您可能不想使用 new System.Globalization.CultureInfo("fr-FR") 对语言环境进行硬编码,而是使用变量或线程当前语言环境中的语言环境。

    【讨论】:

    • 我正在考虑使用当前的服务器文化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2018-03-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多