Question

Bonjour, est-il possible d’avoir un formulaire ASP.NET MVC utilisant les itinéraires définis dans Global.asax pour publier ses valeurs (via une requête GET)? J'ai le formulaire défini comme ceci:

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

et la route suivante dans mon fichier global.asax:

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

Je souhaite qu'après avoir soumis le formulaire avec nomSat ayant la valeur XXX, l'URL suivante soit affichée dans mon navigateur: http: // nom de machine / sat / XXX

Est-ce possible?

Était-ce utile?

La solution

Vous souciez-vous vraiment de l'URL vers laquelle vous naviguez, ou vous souciez-vous uniquement de la prochaine URL que l'utilisateur verra?

Si vous vous souciez de l'URL visible par l'utilisateur, vous n'avez pas besoin d'utiliser la méthode que vous essayez.

Ce que vous pouvez faire est d’avoir une action de publication qui se lit dans le fichier "nomsat". paramètre, puis redirigez vers une autre action contenant l'URL souhaitée.

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

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

Autres conseils

Non, vous ne pouvez pas ajouter de paramètres de routage à l'aide d'un formulaire HTML.

Vous pouvez cependant simuler le comportement avec une fonction Javascript. Comme ceci:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top