C# 我能把razor代码减少到几行吗?

C# 我能把razor代码减少到几行吗?,c#,visual-studio-2010,asp.net-mvc-3,razor,C#,Visual Studio 2010,Asp.net Mvc 3,Razor,我可以减少这个代码吗 <li> @{ if (@Model.PublicationDate.HasValue) { @Model.PublicationDate.Value.ToString("D", new System.Globalization.CultureInfo("fr-FR")) } else { @:"pas disponible" }

我可以减少这个代码吗

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

可以使用以下属性装饰视图模型属性:

[DisplayFormat(DataFormatString = "{0:D}", NullDisplayText = "pas disponible")]
public DateTime? PublicationDate { get; set; }
然后你的观点就变成了:

<li>
    @Html.DisplayFor(x => x.PublicationDate)
</li>
  • @DisplayFor(x=>x.PublicationDate)
  • 因此,现在它被简化为一条简洁的线条。

    我想您可以使用。如果这是个好主意,那是另一个问题


    您可能不想使用新System.Globalization.CultureInfo(“fr fr”)硬编码区域设置,但可以使用变量中的区域设置或线程的当前区域设置。

    我正在考虑使用当前服务器区域设置您会丢失区域设置信息。不管怎么说,它应该放在elese的某个地方。
    <li>
        @Html.DisplayFor(x => x.PublicationDate)
    </li>