我正在 webforms aspx 项目中构建一个多语言站点,并且我正在考虑执行此操作的最佳解决方案。
我在 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");
}
});
};
站点.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 代码中调用它的情况?
我在正确的轨道上吗?
感谢您的帮助和时间