0 votes

routes personnalisées asp.net mvc avec plusieurs boutons de soumission

J'ai donc créé un itinéraire personnalisé :

routes.MapRoute(
          "Wizard", // Route name
          "Wizard/{page}", // URL with parameters
          new { controller = "Wizard", action = "Index" }  // Parameter defaults
        );

et j'ai ce qui suit sur mon écran :

<% Html.BeginForm("Continue", "Wizard"); %>
    <input type="submit" value="Continue" name="Continue" />
<% Html.EndForm(); %>

dans lequel je veux appeler cette fonction :

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Continue(string Number, string Rev)
    {
        (...)
    }

mais à son tour, lorsque ce bouton est pressé, il appelle toujours l'index postback plutôt que celui que je veux. Si je supprime la route personnalisée, elle appelle ma fonction, mais ce que je veux voir s'afficher dans la barre d'adresse est : localhost:xxxx/Wizard/1 où le numéro à la fin est la page (div shown) de l'assistant soit 1, 2, 3, ou 4. Est-ce qu'il y a quelque chose qui m'échappe ou est-ce que ce n'est pas possible ? Je vous remercie.

0voto

Dan Atkinson Points 6043

Vous devriez modifier votre itinéraire de manière à ce que l'action soit le paramètre :

routes.MapRoute(
  "Wizard", // Route name
  "Wizard/{action}", // URL with parameters
  new { controller = "Wizard", action = "Index"}  // Parameter defaults
);

En ce qui concerne le reste de votre question, pouvez-vous nous donner des précisions ?

0voto

James S Points 2497

Qu'est-ce qui est écrit dans votre HTML en ce moment (la balise de formulaire) ?

D'où vient le numéro de page ? Je ne vois pas comment vous essayez de l'intégrer à l'URL. (Et comme il ne fait pas partie de l'URL, la route ne correspond pas.) Vous devez l'intégrer à la route, par exemple :

<%= Html.BeginForm("Continue", "Wizard", new { page = intPage }) %>

Par ailleurs, je ne suis pas certain que la valeur par défaut de FormMethod soit POST. Vous devriez peut-être vérifier cela dans la balise du formulaire.

Jacques

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X