2017-04-18 1 views
3

J'essaie de faire quelque chose comme ça.Comment faire une route personnalisée dans ASP MVC

MyUrl.com/ComicBooks/{NameOfAComicBook}

Je foiré autour avec RouteConfig.cs mais je suis tout à fait nouveau à cela, donc je vais avoir du mal. NameOfAComicBook est un paramètre obligatoire.

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


     routes.MapMvcAttributeRoutes(); 


     routes.MapRoute("ComicBookRoute", 
          "{controller}/ComicBooks/{PermaLinkName}", 
          new { controller = "Home", action = "ShowComicBook" } 
          ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

    } 
} 

HomeController.cs

public ActionResult ShowComicBook(string PermaLinkName) 
{ 


    // i have a breakpoint here that I can't hit 


    return View(); 
} 
+0

Est-ce que 'NameOfAComicBook' est un paramètre optionnel ou obligatoire? Inclure plus de détails. –

+0

@TetsuyaYamamoto J'ai mis à jour ma question. (obligatoire) – 0x4f3759df

+0

Montrez vos itinéraires, y compris ce que vous avez essayé et expliquez ce qui ne fonctionne pas. –

Répondre

2

remarqué que le routage d'attribut est également activé.

routes.MapMvcAttributeRoutes(); 

Vous pouvez également configurer l'itinéraire directement dans le contrôleur.

[RoutePrefix("ComicBooks")] 
public class ComicBooksController : Controller {  
    [HttpGet] 
    [Route("{PermaLinkName}")] //Matches GET ComicBooks/Spiderman 
    public ActionResult ShowComicBook(string PermaLinkName){ 
     //...get comic book based on name 
     return View(); //eventually include model with view 
    } 
} 
+0

Mon ComicBookRoute a Controller = "Home" donc je l'attendais pour être traité par HomeController. – 0x4f3759df