2013-07-30 65 views
1

有沒有辦法將所有DateTime對象的默認格式更改爲Razor中的「dd.MM.yyyy」?更改剃刀的默認日期時間格式

我想涵蓋一些程序員忘記調用擴展方法或傳遞格式字符串的情況,即<p>@Model.MyDateTimeObject</p>

+0

您可以使用DateTime的數據模板來達到類似的效果。與全局更改默認文化設置相比,這會產生較小的影響。 – Aron

回答

4

在Razor中沒有像默認格式化的東西。當你這樣做:<p>@Model.MyDateTimeObject</p>剃鬚刀將只使用默認的DateTime.ToString重載打印日期。

這個工作的實際文化信息,所以例如,如果你想你的例子作爲默認的ToString行爲,那麼你應該改變實際請求的當前文化。例如。 in global.asax:

protected void Application_BeginRequest() 
{ 
    CultureInfo culture = (CultureInfo)CultureInfo.InvariantCulture.Clone(); 
    culture.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy"; 
    culture.DateTimeFormat.LongTimePattern = ""; 
    Thread.CurrentThread.CurrentCulture = culture; 
} 
+0

謝謝。有什麼我可以做的切換文化只爲視圖渲染,而不是我的服務器代碼的其餘部分?有沒有與此時相匹配的ActionFilter方法? –

+1

就我所知,沒有內置actionfilter,但您可以輕鬆創建一個:http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute(v=vs.108 ).aspx,您可以將當前的文化保存在OnResultExecuting中並切換到新的文化,並可以在OnResultExecuted內將其更改回來。 –