Tengo una selección de html para cambiar de idioma en el sitio.
<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>Y aquí está el código js para cambiar:
<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>Función del controlador:
[HttpPost] public ActionResult SetLang(string lang) { ...user_lang = lang; return new EmptyResult(); }Entonces, el problema es el mismo que en mi pregunta anterior (¿Por qué no funciona la solicitud POST al controlador? ): el método no se llama cuando envío POST desde la página de inicio de sesión. Así que ahora no estoy tratando de trabajar con datos antes de que se cargue la página, solo estoy tratando de cambiar el idioma del sitio en la página de inicio de sesión de acuerdo con la elección del usuario. ¿Cuál puede ser el problema con POST? Gracias por adelantado.