2011-09-02 8 views
0

Dans mon application ASP.Net MVC, je les contrôleurs suivantsASP.net MVC question Routing

  • HomeController

  • ExController

ExController a cette méthode qui prend chaîne paramètres:

public ActionResult Index(String id){.... 

Avec les paramètres, la page s'ouvre avec succès comme: mysite.com/Ex/Index/my-string-value

mais je veux qu'il prenne des paramètres comme: mysite.com/Ex/my-string-value

Voici mes entrées de routage:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Post", 
      "{controller}/{action}/{postId}", 
      new { controller = "Ex", action = "Index", postId="" } 
      ); 

Ce que je dois faire pour envoyer des paramètres à obtenir ExController en tapant mysite.com/Ex/GetParameter au lieu de mysite.com/Ex/Index/GetParameter. S'il vous plaît aider.

Répondre

2

Tout d'abord, vous devez définir l'Ex-route avant l'itinéraire par défaut, sinon la valeur par défaut va tout attraper. Deuxièmement, vous pouvez simplement faire ceci:

routes.MapRoute(
      "Post", 
      "Ex/{postId}", 
      new { controller = "Ex", action = "Index", postId="" } 
      ); 

Cela vous permettra de faire www.mysite.com/Ex/GetParameter

Vous devez également vous changer l'action Index de vous ExController à:

public ActionResult Index(String postId){.... 

pour obtenir le ModelBinder pour lier postId correctement.

Ce sera alors à son tour appeler l'indice d'action passant GetParameter comme postId

Hope this helps!

+0

Merci Yngve. Cela a fonctionné :) –

+1

De rien! Heureux d'avoir pu aider :) –