2012-03-07 1 views
0

В моем проекте используется CultureModule.cs, чтобы установить информацию о культуре, основанную на значении моей переменной. Вот примерHttp-модуль для изменения культуры не имеет эффекта

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Globalization; 

namespace CwizBankApp 
{ 
    public class CultureModule:IHttpModule 
    { 
     public void Dispose() 
     { 
     } 
     public void Init(HttpApplication context) 
     { 
      context.PostAuthenticateRequest += 
          new EventHandler(context_PostAuthenticateRequest); 
     } 
     void context_PostAuthenticateRequest(object sender, EventArgs e) 
     { 

      CultureInfo currentCulture; 
      if (Global.gDateFormat.Trim() == "British") 
      { 
       currentCulture = new System.Globalization.CultureInfo("en-GB"); 
      } 
      else 
      { 
       currentCulture = new System.Globalization.CultureInfo("en-US"); 
      } 


      System.Threading.Thread.CurrentThread.CurrentCulture 
                  = currentCulture; 
     } 
    } 
} 

После этого я его настройки в web.config следующим образом:

<add name="CultureModule" 
       type="CwizBankApp.HttpModules.CultureModule,CwizBankApp"/> 

В настоящее время моя переменная в британском формате, однако даты выполняется в формате США.

Мой вопрос: я делаю это правильно, или что-то еще отсутствует.

ответ

2

Форматы зависят от Thread.CurrentUICulture.

Таким образом, вы должны сделать следующее:

System.Threading.Thread.CurrentThread.CurrentUICulture = currentCulture; 

См how to set the Culture in asp.net on msdn.

+0

,,,, Я попытался сделать это, но дату, которую я пытаюсь сравнить, по-прежнему сравнивается в формате США ,,, я использую валидатор сравнения, чтобы их компилировать – freebird

+0

@freebird Можете ли вы высказать свой код сравнения? – gideon

+0

freebird

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

  • Нет связанных вопросов^_^