【问题标题】:ASP.NET MVC5 display date in custom formatASP.NET MVC5 以自定义格式显示日期
【发布时间】:2014-11-21 04:06:14
【问题描述】:

我正在尝试格式化 DateTime 变量,以便将其显示为 MMMM dd, yyyy,例如2011 年 6 月 10 日。

在我看来,我有:

@Html.Raw(modelItem => item.MyDateTimeProperty.ToString("MMMM dd, yyyy"))

这会引发如下异常:

lambda expression cannot be converted to 'string' because 'string' is not
a delegate type

当然,item.MyDateTimeProperty 数据类型是DateTime

作为参考,我使用了以下示例 [1]

// The example displays the following output: 
//    Today is June 10, 2011. 
DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

我做错了什么?

编辑

我看到stack247 的回答是理想环境下最合适的解决方案。但是,在我的情况下,控制器返回一个在我的模型类中不存在的对象。这是因为我正在使用 API 来获取数据。这就是为什么Anrei 的解决方案最适合我。

@Html.Raw(item.MyDateTimeProperty.ToString("MMMM dd, yyyy"))

[1]http://msdn.microsoft.com/en-US/library/8kb3ddd4%28v=vs.110%29.aspx

【问题讨论】:

  • this 可能会有所帮助

标签: c# asp.net-mvc datetime razor tostring


【解决方案1】:

您可以通过向模型添加注释来格式化视图中的日期时间:

[DisplayFormat(DataFormatString = "{0:MMMM dd, yyyy}")]
public DateTime ThisDate { get; set }

然后在你的视野中:

@Html.DisplayFor(x => x.ThisDate)

【讨论】:

  • 这实际上是更好的做法。您应该始终拥有您需要在视图上显示的所有内容,方法是让您的模型准备好/配置为仅显示您需要在视图上显示的内容,而无需在视图中显示任何逻辑。视图应该只显示数据而不是其他任何东西。该模型完成所有必要的工作
【解决方案2】:

Html.Raw 实际上需要一个字符串作为参数,而您传入​​的是一个 lambda。不知道为什么,你在这里没有以任何方式使用 lambda。所以这就是错误消息所指的内容。

看起来应该只是

@Html.Raw(item.MyDateTimeProperty.ToString("MMMM dd, yyyy"))

【讨论】:

    【解决方案3】:

    @Html.Raw() 方法接受一个字符串,我认为你应该改用@Html.DisplayFor()

    @Html.DisplayFor(model => model.Date) 
    

    您也可以查看此问题以获取有关应用格式的信息I don't want error message as "The field <field> must be a date", if I am selecting date in "yyyy/MM/dd" format in en-AU locale

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多