我正在尝试格式化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
答案 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
的信息