2010-01-17 4 views
1

Helo, J'essaie d'avoir une URL comme celui-ci/Forum/Index/2Asp.net routage mvc: ActionLink retourner une URL avec des paramètres dans querystring

pour url J'ai un itinéraire {contrôleur}/{ action}/{page} dans mon global.asax

Si je teste l'URL ci-dessus avec le débogueur de route il correspond à la route ci-dessus (et un autre mais c'est le premier dans la liste) mais si je crée une URL avec ActionLink (comme ceci: <% = Html.ActionLink (item.Title, "Index", nouveau {controller = "Forum", page = page})%>), cette méthode me renvoie cette URL/Forum/Index? Page = 2

Existe-t-il un moyen d'avoir une URL avec rien en querystring avec la méthode ActionLink?

Ce sont tous mes itinéraires et la route de correspondance est nommé DefaultWithPage:

routes.IgnoreRoute ("{} ressources .axd/{*} Pathinfo"); routes.IgnoreRoute ("google884930bf56853ce4.html");

 routes.MapRoute(
      "sitemapXML", 
      "Sitemap.xml",                      // URL with parameters 
      new { controller = "Sitemap", action = "Sitemap" }             // Parameter defaults 
     ); 

     routes.MapRoute(
      "ImageStat",                      // Route name 
      "{controller}/{action}/{MailID}/{UserID}.gif",              // URL with parameters 
      new { controller = "", action = "", MailID = "", UserID = "" },          // Parameter defaults 
      new { 
       MailID = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$", 
       UserID = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" 
      } 
     ); 

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

     routes.MapRoute(
      "DefaultWithPager",                     // Route name 
      "{controller}/{action}/{page}",                  // URL with parameters 
      new { controller = "Home", action = "", page = "" },            // Parameter defaults 
      new { page = @"^\d+$" } 
     ); 

     routes.MapRoute(
      "DefaultWithID",                     // Route name 
      "{controller}/{action}/{ID}",                  // URL with parameters 
      new { controller = "Home", action = "", ID = "" },             // Parameter defaults 
      new { ID = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" } 
     ); 

     routes.MapRoute(
      "DetailWithID",                      // Route name 
      "{controller}/{action}/{ID}/{Title}",                // URL with parameters 
      new { controller = "Home", action = "", ID = "", Title = "" },          // Parameter defaults 
      new { ID = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" } 
     ); 

     //Handler route 
     routes.MapRoute(
      "ImageResizer",                      // Route name 
      "{controller}/{action}/{Title}/{ID}.jpg",               // URL with parameters 
      new { controller = "", action = "", Title = "", ID = "" }           // Parameter defaults 
     ); 


     //Section Pages Routes 
     routes.MapRoute(
      "SectionIndex",                      // Route name 
      "{sectionName}/{controller}/{action}",                // URL with parameters 
      new { controller = "", action = "", sectionName = "" }            // Parameter defaults     
     ); 

     routes.MapRoute(
      "SectionDetails",                     // Route name 
      "{sectionName}/{controller}/{action}/{ID}",               // URL with parameters 
      new { controller = "", action = "", sectionName = "", ID = "" }          // Parameter default 
     ); 

     routes.MapRoute(
      "SectionDetailsWithDate",                   // Route name 
      "{sectionName}/{controller}/{action}/{month}/{year}",            // URL with parameters 
      new { controller = "Home", action = "", page = "", month = "", year = "" },       // Parameter defaults 
      new { month = @"^\d+$", year = @"^\d+$" } 
     ); 

     routes.MapRoute(
      "SectionDetailsWithTitle",                   // Route name 
      "{sectionName}/{controller}/{action}/{ID}/{Title}",             // URL with parameters 
      new { controller = "", action = "", sectionName = "", ID = "", Title = "" }       // Parameter defaults 
     ); 

     routes.MapRoute(
      "SectionDetailsPagingWithTitle",                 // Route name 
      "{sectionName}/{controller}/{action}/{page}/{ID}/{Title}",           // URL with parameters 
      new { controller = "", action = "", sectionName = "", page = "", ID = "", Title = "" }    // Parameter defaults 
     ); 

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

Gauthier

+0

Veuillez afficher tous les enregistrements d'itinéraire. Ce que vous fournissez ici devrait fonctionner très bien. – alexn

Répondre

3

Il semble que votre enregistrement d'itinéraire est très bien. Vous avez juste besoin d'utiliser l'aide de Html.RouteLink et lui dire le nom de la route à utiliser:

<%= Html.RouteLink(item.Title, "DefaultWithPager", new { controller = "Forum", page = page })%> 
0

La façon dont fonctionne le routage Mvc est qu'il évalue chacune des routes en ordre et utilisera le premier qui allumettes. Dans votre cas, le premier à correspondre sera le:

routes.MapRoute(
    "Default", 
    "{controller}/{action}", 
    new { controller = "Home", action = "Index" } 
); 

Comme cette route n'a pas de correspondances pour la page, il ajoutera sur l'url que d'obtenir des paramètres.

Si vous voulez frapper celui avec la cartographie de la page qui doit venir avant que d'autres voies qui correspondent aux données d'itinéraire vous passant.

Il doit toujours aller de plus au moins spécifique.