我在webforms aspx项目中构建了多语言站点,我正在考虑这样做的最佳解决方案。在ASPX项目中设置CurrentUI
我在MasterPage上有一些图像,一旦点击了,我就调用一个Jquery方法,它应该重定向到一个web方法。
反过来,我有一个基础页面正在初始化文化,并且除MasterPage外的所有页面都从它继承。
到目前为止,我有以下几点: -
HTML: -
<div class="LocalizationFlags">
<img src="Images/gb.png" onclick="langSelection('gb')" />
<img src="Images/fr.png" onclick="langSelection('fr')"/>
<img src="Images/es.png" onclick="langSelection('es')"/>
<img src="Images/de.png" onclick="langSelection('de')"/>
<img src="Images/it.png" onclick="langSelection('it')"/>
</div>
JQuery的: -
function langSelection(lang) {
setSession(lang);
};
function setSession(Lang) {
var args = {
lang: Lang
};
$.ajax({
type: "POST",
url: "Site.Master.aspx/SetUserCulture",
data: JSON.stringify(args),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
alert('Success.');
},
error: function() {
alert("Fail");
}
});
};
Site.Master.cs
[WebMethod(EnableSession = true)]
private void SetUserCulture(string lang)
{
HttpContext.Current.Session["CurrentUI"] = lang;
}
BasePage的。 cs
protected override void InitializeCulture()
{
if (Session["CurrentUI"] != null)
{
String selectedLanguage = (string)Session["CurrentUI"];
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
}
base.InitializeCulture();
}
现在有几个问题,我现在有什么。 jquery不起作用,抛出一个“失败”,并且我知道我不能使用Site.Master.cs来放置webmethod。
这是仅仅为这种方法创建一个WCF服务的情况,而且然后从Jquery代码中调用它?
我在正确的轨道上吗?
感谢您的帮助和时间
嗨安德烈,感谢您的解释。你能给我一个你提到的HTTP处理程序的例子吗? – Johann 2013-03-27 14:12:53
@Johann,这里是[MSDN页面](http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.aspx)的链接。用两个词来说,它非常简单 - 用一种方法实现一个接口,在web.config中注册,然后从应用程序的其他部分调用它。 – Andrei 2013-03-27 14:19:43
嗨安德烈,所以我创建了一个类CultureHandler实现IHTTPHandler和IRequiresSessionState,一个方法SetUserCulture(字符串郎)。你如何在web.config中注册它,然后在代码中使用它? – Johann 2013-03-27 14:39:35