2009-07-28 4 views
0

J'ai donc un itinéraire personnalisé en tant que tel:itinéraires asp.net mvc personnalisés avec plusieurs boutons d'envoi

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

et ont les éléments suivants sur mon point de vue:

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

Dans ce que je veux appeler cette fonction:

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

mais à son tour, lorsque ce bouton est enfoncé toujours appelle l'indice postback plutôt que celui que je veux. Si je supprime l'itinéraire personnalisé, il appelle ma fonction, mais ce que je veux afficher dans la barre d'adresse est: localhost: xxxx/Wizard/1 où le numéro à la fin est la page (div montré) de l'assistant soit 1 , 2, 3 ou 4. Y a-t-il quelque chose qui me manque ou ne peut-il pas être fait? Merci.

Répondre

0

Vous devez modifier votre itinéraire afin que l'action est 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, s'il vous plaît pouvez-vous préciser?

0

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

D'où le numéro de page devrait-il provenir? Je ne vois pas comment vous essayez de faire partie de l'URL. (Et comme il ne fait pas partie de l'URL, il provoque la route de ne pas correspondre.) Vous devez le faire partie de la route, comme:

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

Aussi, je ne suis pas positif que la valeur par défaut pour FormMethod est POST. Vous voudrez peut-être vérifier dans la balise de formulaire.

James

Questions connexes