2010-09-21 21 views

回答

0

如果設置的文化不是從瀏覽器設置中讀取(就像住在一個數據庫中),您需要設置在每次請求。

如下所述: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

覆蓋頁的 'InitializeCulture' 在每一頁上的方法。所有頁面的通用基類在這裏非常方便。

我建議啓動.NET反射器並查看默認實現的功能。這將有助於澄清默認情況下發生了什麼。

由於這是在頁面級別處理的事件,而不是在Global.asax中,所以我期望這會被重新設置。正如文章描述的那樣,這個事件在頁面生命週期的早期被調用,捕獲用戶輸入需要直接訪問'Request.Form'。

編輯:請嘗試一下,看看這必須在每個請求中設置。如果你看到不同的結果或者我誤解了你的問題,請告訴我。

的Default.aspx:打印'21 .09.2010'

<%@ Page Language="C#" %> 

<%@ Import Namespace="System.Threading" %> 
<%@ Import Namespace="System.Globalization" %> 

<script runat="server"> 
protected override void InitializeCulture() 
     { 
      UICulture = "de-DE"; 
      Culture = "de-DE"; 
      //base.InitializeCulture(); 
     } 
</script> 
<HTML> 
<head> 
</head> 
<body> 
<%= System.DateTime.Now.ToShortDateString()%> 
</body> 
</HTML> 

Default2.aspx:打印 '2010年9月21日'(我的默認紫色非硫是ES-US)

<%@ Page Language="C#" %> 
<HTML> 
<head> 
</head> 
<body> 
<%= System.DateTime.Now.ToShortDateString()%> 
</body> 
</HTML> 

的您點擊這些頁面的順序並不重要。結果不會改變。

人們使用的一種方法是將此信息存儲在會話變量中,並使用會話變量來設置文化..因此,此邏輯是中心化的。

0

我非常肯定,UICulture一旦設置,就停留在整個ASP會話中(獨立於您爲自己的應用程序創建的任何會話)。

編輯:看起來像一個簡單的總結在這裏:http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/localization.aspx

+0

你跟我上另一個請求設置相同的UICulture新要求?因爲我需要爲一個ASMX – 2010-09-21 01:15:08

+0

設置Culture,如果請求來自同一個客戶端,並且您沒有改變任何內容,那麼它應該是相同的UICulture。 – 2010-09-21 02:57:25