Frage

Hallo ist es möglich, eine ASP.NET MVC Form zu haben, die die Routen in Global.asax definiert verwendet, um seine Werte zu schreiben (über eine GET-Anforderung)? Ich habe die Form definiert wie folgt:

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

und die folgende Route in meinem global.asax:

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

Ich möchte, dass nach einer schicken Sie das Formular mit nomSat den Wert XXX mit der folgenden URL in meinem Browser haben: http: // Computername / sat / XXX

Ist es möglich?

War es hilfreich?

Lösung

Haben Sie Sorge, wirklich über die URL, die Sie navigieren zu wollen, oder nur die Ihnen wichtig sind, was die nächste URL der Benutzer sieht, ist?

Wenn Sie nur über die URL Pflege der Benutzer sieht, dann müssen Sie nicht die Methode verwenden, die Sie versuchen.

Was könnten Sie tun, ist einen Beitrag Aktion, die in den „nomsat“ Parametern liest, dann zu einer anderen Aktion umleiten, der die URL haben Sie wollen.

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

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

Andere Tipps

Nein, Sie können nicht auf die Routing-Parameter mit einem HTML-Formular hinzufügen.

Sie können jedoch das Verhalten mit einer Javascript-Funktion simulieren. Wie folgt aus:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top