Я создаю сайт Multi-Lingual в проекте aspx webforms, и я думаю о лучшем решении для этого.Настройка CurrentUI в проекте ASPX
У меня есть некоторые изображения на MasterPage, и один раз щелкнул, я вызываю метод JQuery, который должен перенаправить на веб-метод.
В свою очередь, у меня есть базовая страница, которая инициализирует Культуру, и все страницы, за исключением 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 не работает, выдает «Fail», а также я знаю, что я не могу использовать Site.Master.cs для ввода веб-метода.
Это всего лишь случай создания службы WCF для этого метода и затем называет его кодом JQuery?
Я нахожусь на правильном пути здесь?
Спасибо за вашу помощь и время
Привет, Андрей, спасибо за объяснение. Не могли бы вы привести мне пример обработчика HTTP, на который вы ссылались? – Johann
@Johann, вот ссылка на страницу [MSDN] (http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.aspx). В двух словах это очень просто - вы реализуете интерфейс с одним методом, регистрируетесь в web.config, а затем вызываете его из других частей приложения. – Andrei
Привет, Андрей, поэтому я создал класс CultureHandler, который реализует IHTTPHandler и IRequiresSessionState с помощью одного метода SetUserCulture (string lang). Как вы зарегистрируете его в web.config, а затем используете его в коде? – Johann