Подход, использованный в статье, не самый лучший для сохранения локализации.
Но вы можете сделать следующее:
- Обрабатывать событие, когда пользователь нажимает на языковую ссылку.
- Смена языка через ajax, не позволяющая браузеру перейти на фактическую ссылку.
- Отправьте форму, которую пользователь редактирует, добавив параметр с надписью «убедитесь, что вы не сохраняете».
- Сервер выполнит повторную визуализацию формы, как обычно, с опубликованными данными, но на новом языке.
псевдокод JavaScript:
var submitCurrentForm = function() {
$("form:last").submit({
data { dontSave: "True"} // this is just meta, you can use QueryString or hidden input
});
}
var switchLanguage = function(href, done) {
$.post(href).success(done); // using jQuery deferred
}
$("a.lang").click(function(e) {
e.preventDefault();
switchLanguage(this.href, submitCurrentForm);
});
Псевдокод контроллера:
public ActionResult Create(YourStuff stuff, bool dontSave = false) {
if (!dontSave)
ProcessTheStuff();
return View(stuff);
}
Не лучшее решение, но самое простое в банкомате.