Domanda

Ciao, è possibile avere un modulo ASP.NET MVC che utilizza le route definite in Global.asax per pubblicare i suoi valori (tramite una richiesta GET)? Ho la forma definita in questo modo:

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

e il seguente percorso nel mio global.asax:

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

Vorrei che dopo aver inviato il modulo con nomSat con il valore XXX per avere il seguente URL nel mio browser: http: // machinename / sat / XXX

È possibile?

È stato utile?

Soluzione

Ti interessa davvero l'URL che cerchi o ti interessa solo quale sia l'URL successivo che l'utente vede?

Se ti interessa solo l'URL visualizzato dall'utente, non è necessario utilizzare il metodo che stai provando.

Quello che potresti fare è fare un'azione post che legga nel "nomsat" parametro, quindi reindirizza a un'altra azione che ha l'URL che desideri.

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

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

Altri suggerimenti

No, non è possibile aggiungere ai parametri di routing utilizzando un modulo HTML.

Puoi simulare il comportamento con una funzione Javascript. In questo modo:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top