0
我想更改我的网站中的语言。我以为我可以使用Handler来做到这一点,所以下降将为http://domain.com/Handler.ashx?language=en-US,f.i.更改ASHX处理程序上的Thread.CurrentThread.CurrentCulture
所以,它调用处理器,具有此代码:
string selectedLanguage = context.Request.QueryString["language"];
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
context.Response.Redirect(context.Request.UrlReferrer.AbsoluteUri.ToString());
但是,当它回到过去,Thread.CurrentThread.CurrentCulture设置为PT-BR,这是初始值。
我的问题是:处理程序上的线程与加载内容的aspx页面不同?你有什么建议作为解决方法?
谢谢
谢谢。它按我想要的那样工作。 只是出于好奇:你会在这种情况下推荐什么? ty再 – 2009-08-20 17:57:48
那么,本地化和文化信息应该是你试图在会话级别处理的东西。使用此处理程序方法可解决通过此处理程序运行的所有请求的问题,但这会给您的代码带来不必要的紧张和困惑。通过实现一些非常简单的服务器控件或类似于放置在页面(或主页面)上的OnInit将线程文化设置为会话中存储的某个值,并且当用户从下拉列表中选择一个项目时更改该值,你已经解决了整个会话的问题。 我可能不明白... – LorenVS 2009-08-20 18:00:58
好的。此解决方案有效。但每次我点击一个链接,它只是'重新启动'的文化,我想这是出于同样的原因,你在原始答案上说。我要参加会议级别的尝试。 – 2009-08-20 18:46:54