Pergunta

I have a controller named article and my articles in the url take the shape of {controller}/{action}/{id}/{title}/{mixed} how can i get that to {controller}/{id}/{title}/{mixed}

my route value is

routes.MapRoute(
            "articles", 
            "{controller}/{action}/{id}/{stitle}/{mixed}", 
  new { controller = "article",action="detail",mixed= UrlParameter.Optional} // Parameter defaults

        );

I have tried this

 routes.MapRoute(
            "articles", // Route name
            "{controller}/{id}/{title}/{mixed}",
  new { controller = "article",action="detail",mixed= UrlParameter.Optional}

        );

but get a 404 error as my links are in the form

@Html.ActionLink("My article", "detail", "article", new { id = item.ArticleID, title = item.title, mixed = item.mixed })
Foi útil?

Solução

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        "ArticleWithoutAction",              // Article Without Action name
        "{controller}/{id}/{name}", 
        new { controller = "Article", 
              action     = "detail", 
              id         =  UrlParameter.Optional, 
              title      =  UrlParameter.Optional, 
              mixed      =  UrlParameter.Optional
            } // Parameter defaults
    );

    routes.MapRoute(
        "ArticleWithAction",                  // Article With Action name 
        "{controller}/{action}/{id}/{name}", 
        new { controller = "Article", 
              action     = "detail", 
              id         =  UrlParameter.Optional, 
              title      =  UrlParameter.Optional, 
              mixed      =  UrlParameter.Optional
            } // Parameter defaults
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}", 
        new { controller = "Article", 
              action     = "detail" 
            } // Parameter defaults
    );
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top