Tengo una vista, en la que tengo un evento de cambio de menú onchange . Quiero pasar el valor seleccionado del menú desplegable al controlador usando location.href , pero no puedo hacerlo con éxito.
Agregué la alert para ayudarme a ver cuál es el valor, que muestra correctamente el valor seleccionado en el menú desplegable.
Mi vista:
<div class="modelDropdown"> @Html.DropDownListFor(m => m.groupId, Model.pointGroupDropdown, "Select a Model", new { @id = "pointGroupDropdown", @onchange = "LoadPointGroups(this)", @class = "form-control", @style = "width: 200px;" }) </div> <script> function LoadPointGroups(pointGroup) { alert(pointGroup.options[pointGroup.selectedIndex].text); var groupName = pointGroup.options[pointGroup.selectedIndex].text; location.href = '@Url.Action("LoadPointGroups", new {groupName = "groupName"})'; } </script>Mi controlador:
public ActionResult LoadPointGroups(string groupName){ *do stuff* } Esto da como resultado que groupName sea "groupName" en los parámetros del controlador.
yo también probé
location.href = '@Url.Action("LoadPointGroups")/' + groupName; Pero eso pasa null al controlador.
¿Cuál es la forma/sintaxis correcta para hacer esto? ¡Cualquier ayuda es muy apreciada!
Podría usar la solicitud Ajax para esta llamada. Aquí tienes un ejemplo de cómo implementarlo:
var BaseUrl = '@Url.Content("~/")'; function LoadPointGroups(pointGroup) { var groupName = pointGroup.options[pointGroup.selectedIndex].text; $.ajax({ BaseUrl + yourControllerPath + '/LoadPointGroups?groupName=' + groupName, method: 'GET', //Your controller's method type cache: false, }).done(function (whatYouGet) { // You could also do sth here if it's a get method }); }cambiar configuración de rutas
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Help", action = "Index", id = UrlParameter.Optional } ).DataTokens = new RouteValueDictionary(new { area = "HelpPage" });Puedes probar de esta manera:
function LoadPointGroups(pointGroup){ alert(pointGroup.options[pointGroup.selectedIndex].text); var url =@Url.Action("YourMethodName", "ControllerName"); //your url var gName = pointGroup.options[pointGroup.selectedIndex].text; //your value window.location.href = url + "?groupName=" + gName; }