2010-09-21 2 views
1

Если я установил культуру культуры и UICulture для одного ASPX, после прохождения для этой страницы, все мои aspx, которые используют один и тот же поток (не тот же запрос), будут иметь одну и ту же культуру?ASP.NET перезагрузить культуру потока после использования?

Потому что мне нужно, чтобы установить культуру только для одного ASMX

ответ

0

Если культура установить не читается из настроек браузера (как он живет в базе данных) Вы должны установить это на каждом запросе.

Как описано здесь: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

Override метод данной страницы 'InitializeCulture' на каждой странице. Здесь очень полезен общий базовый класс для всех ваших страниц.

Я бы предложил включить рефлектометр .NET и посмотреть, что делает реализация по умолчанию. Это поможет уточнить, что происходит по умолчанию.

Поскольку это событие обрабатывается на уровне страницы, а не в Global.asax, я бы ожидал, что это будет повторно установлено. также, как описано в статье, это событие называется настолько ранним в жизненном цикле страницы, что захват User Input требует прямого доступа к «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: печатает '9/21/2010' (мой по умолчанию cluture является эс-US)

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

порядок, в котором вы попадаете на эти страницы, не имеет значения. Результаты не меняются.

Один подход к людям используется для хранения этой информации в переменной сеанса и использования переменных сеанса для установки культуры ..so для этого централизована.

0

Я уверен, что UICulture, когда-то установленный, остается для всего сеанса ASP (что происходит независимо от того, какой сеанс вы создаете для своего собственного приложения).

Edit: выглядит как простое резюме здесь: http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/localization.aspx

+0

новых запросы вы пришли с тем же UICulture, что я поставил на другой запрос? Поскольку мне нужно установить Culture только для одного ASMX –

+0

, если запрос поступает от одного и того же клиента, и вы ничего не изменили, тогда он должен быть тем же UICulture. –

Смежные вопросы