Pregunta

Hola, ¿es posible tener un formulario MVC de ASP.NET que use las rutas definidas en Global.asax para publicar sus valores (a través de una solicitud GET)? Tengo la forma definida de esta manera:

<% using (Html.BeginForm("CanviaOpcions","Sat",FormMethod.Get))
    { %>
    <fieldset>
        <legend>Opciones</legend>
        <%= Html.DropDownList("nomSat")%>
        <input type="submit" />
    </fieldset>
<% } %>

y la siguiente ruta en mi global.asax:

routes.MapRoute(
    "Canvia Opcions",
    "Sat/{nomSat}",
    new { controller = "Sat", action = "CanviaOpcions" }
    );

Quiero que después de enviar el formulario con nomSat que tiene el valor XXX tenga la siguiente URL en mi navegador: http: // nombre de máquina / sat / XXX

¿Es posible?

¿Fue útil?

Solución

¿Realmente te importa la URL a la que navegas o solo te importa cuál es la próxima URL que ve el usuario?

Si solo te importa la URL que ve el usuario, no necesitas usar el método que estás intentando.

Lo que podrías hacer es tener una acción posterior que se lea en " nomsat " parámetro, luego redirija a otra acción que tenga la URL que desea.

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(string nomsat)
    {
        ...
        return RedirectToAction("Detail", new RouteValueDictionary {{"nomsat", nomsat}});
    }

    public ActionResult Detail(string nomsat)
    {
       ...
       return View();
    }

Otros consejos

No, no puede agregar a los parámetros de enrutamiento mediante un formulario HTML.

Aunque puedes simular el comportamiento con una función de Javascript. Así:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top