Modulo MVC ASP.NET che reindirizza a una route
-
06-07-2019 - |
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?
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>