2014-11-20 33 views
3

我試圖格式化日期時間變量,以便它顯示爲MMMM dd, yyyy,例如, 2011年ASP.NET MVC5自定義格式顯示日期

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

[這](http://stackoverflow.com/questions/18548816/mvc-4-date-culture-issue)可能會幫助 – jbutler483 2014-11-20 16:55:39

回答

2

Html.Raw實際上需要一個字符串作爲參數,而你傳遞一個拉姆達。不知道爲什麼,你在這裏沒有以任何方式使用lambda。所以這就是錯誤信息所指的。

看起來像它應該只是

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

您可以通過添加註釋到模型中格式化日期時間在你的視野:

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

然後在您的視圖:

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

這實際上是更好的公關actice。您應該始終擁有需要顯示的所有內容,因爲您的模型已準備就緒/已配置爲只顯示需要在視圖上顯示的內容,而無需在視圖中添加任何邏輯。該視圖應該只顯示數據而沒有別的。該模型完成所有必要的工作 – 2014-11-20 17:04:33