I have a html select for switching languages on the site.
<div class= "langselect">
<select id ="select" onchange="changeLang()">
<option disabled selected><%: GlobalInterpreter.GetTranslate("Shared", "Language") %></option>
<option value="en"><%: GlobalInterpreter.GetTranslate("Shared", "English") %></option>
<option value="ru"><%: GlobalInterpreter.GetTranslate("Shared", "Russian") %></option>
<option value="es"><%: GlobalInterpreter.GetTranslate("Shared", "Spanish") %></option>
<option value="fr"><%: GlobalInterpreter.GetTranslate("Shared", "French") %></option>
</select>
</div>
And here's js code for changing:
<script type="text/javascript">
function changeLang () {
element = document.querySelector('#select');
console.log(element.value);
$.post("<%:Url.Action("SetLang", "Account")%>", { lang: element.value });
location.reload();
};
</script>
Controller function:
[HttpPost]
public ActionResult SetLang(string lang)
{
...user_lang = lang;
return new EmptyResult();
}
So the problem is the same as it was in my previous question (Why does POST request to controller not work?) — the method is not called when I send POST from login page. So now I'm not trying to work with data before page is loaded, I'm just trying to change site language on the login page according to user's choice. What can be the problem with POST? Thanks in advance.