В дефолтном файле _Layout.cshtml, который является главным слоем, есть 2 кнопки, которые переключают язык сайта:
Есть LanguageController.cs
public class LanguageController : Controller { public ActionResult Change(string LanguageAbbrevation) { if (LanguageAbbrevation != null) { Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguageAbbrevation); Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageAbbrevation); } HttpCookie cookie = new HttpCookie("Language"); cookie.Value = LanguageAbbrevation; Response.Cookies.Add(cookie);
return View(); // В этом и проблема } }
Так же есть пустая вьюшка Change, чтобы не было ошибок.
Дело в том, что эти кнопки отображаются на каждой странице сайта и после нажатия, пользователя отправляет на страницу Change. Пользователя никуда отправлять не надо, только обновить текущую View. Как это сделать?
Ответ
Можно передавать в action дополнительным параметром URL, на который необходимо сделать возврат:
public ActionResult Change(string LanguageAbbrevation, string ReturnUrl)
{
// здесь все то же самое
return Redirect(ReturnUrl);
}
В _Layout указываем значение этого дополнительного параметра как Request.Url.PathAndQuery
Комментариев нет:
Отправить комментарий