ASP.NET MVC5以自定义格式显示日期

时间:2014-11-20 16:52:07

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

我正在尝试格式化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

3 个答案:

答案 0 :(得分:5)

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

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

然后在你的视图中:

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

答案 1 :(得分:2)

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

看起来应该只是

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

答案 2 :(得分:0)

@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

的信息