如果我爲一個ASPX設置線程文化和UICulture,那麼在傳遞該頁面之後,所有使用相同線程(不同的請求)的aspx將具有相同的文化?ASP.NET使用後重置線程文化?
因爲我需要設置文化只是一個ASMX
如果我爲一個ASPX設置線程文化和UICulture,那麼在傳遞該頁面之後,所有使用相同線程(不同的請求)的aspx將具有相同的文化?ASP.NET使用後重置線程文化?
因爲我需要設置文化只是一個ASMX
如果設置的文化不是從瀏覽器設置中讀取(就像住在一個數據庫中),您需要設置在每次請求。
如下所述: 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>
的您點擊這些頁面的順序並不重要。結果不會改變。
人們使用的一種方法是將此信息存儲在會話變量中,並使用會話變量來設置文化..因此,此邏輯是中心化的。
我非常肯定,UICulture一旦設置,就停留在整個ASP會話中(獨立於您爲自己的應用程序創建的任何會話)。
編輯:看起來像一個簡單的總結在這裏:http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/localization.aspx
你跟我上另一個請求設置相同的UICulture新要求?因爲我需要爲一個ASMX – 2010-09-21 01:15:08
設置Culture,如果請求來自同一個客戶端,並且您沒有改變任何內容,那麼它應該是相同的UICulture。 – 2010-09-21 02:57:25