2014-01-30 35 views
3

在我的應用程序中,MVC Culture設置爲「en-US」,UICulture設置爲「NL-NL」。
我有一個視圖呈現包含Datetime對象的模型。
如果我使其像這樣:將UICulture設置爲Html.EditorFor方法

Html.EditorFor(x => x.ForFilter.FromDate) 

它會在EN-US區域性的格式顯示英寸因此,爲了顯示在荷蘭的日期格式我不得不這樣做:

var shortDatePattern = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern; 
@Html.TextBoxFor(x => x.ForFilter.FromDate, new {Value = Model.ForFilter.FromDate.ToString(shortDatePattern) }) 

我知道DisplayFormat屬性,我可以使用爲DateTime場的存在,但不是因爲一個解決方案在運行時確定UICulture

那麼,有沒有更好的方法告訴EditorForTextboxFor方法使用UICulture而不是文化?

+0

微軟似乎被遺忘在MVC – Liam

+0

存在非美國格式的日期是啊我還有一個例子來給予。當通過Session.CreateSQLQuery()和List()方法使用nhibernate執行手寫sql查詢時,您只會得到一個原始對象。然後,如果你試圖做一些像Convert.ToDateTime(x [1]);其中x是來自原始對象的對象數組,如果從使用的任何SQL Server返回的日期格式與應用程序文化的預期格式不匹配,則會遇到麻煩。這是應用文化不能總是與UICulture相同的另一個原因。 – user1980412

回答

0
Model.ForFilter.FromDate.ToString("d", CultureInfo.CurrentUICulture) 

會比你目前擁有的恕我直言更優雅。

但是,如果你想在nl-NL文化中格式化日期(和推測數字),爲什麼不將CurrentCulture設置爲nl-NL?

例如,in web.config

<globalization culture="nl-NL" uiCulture="nl-NL" /> 
+0

因爲文化是在運行時確定的。因此,對於用戶X而言,文化必須是荷蘭語,但對於其他用戶,則必須是德語。因此,我保留了應用程序文化en-US,並且更改了UICulture以便根據用戶文化格式化所有資源/日期/數字。 – user1980412

+0

@ user1980412 - 那麼爲什麼不簡單地將CurrentCulture設置爲用戶特定的文化? – Joe

+0

,因爲有一些代碼依賴en-US文化來構建一些SQL查詢。例如,在進行插入/更新時,如果將Culture設置爲nl-NL,則更新的值應該是SQL級別爲4.12的浮點數,我會得到4,12。如果我還應該依賴於UI的應用文化,那麼我也不會再看到擁有UICulture屬性。更進一步,在ASP.NET Web窗體中,如果我沒有記錯的話,例如在爲窗體上的標籤設置一些值時,將UICulture考慮在內。 – user1980412

相關問題