2011-09-26 57 views
1

我有途径产生:不正确的URL由URL.Action和Html.ActionLink

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

与用法:

@Url.Action("News", "News", new { newsId = "", newsTitle = "" }) 

我想有 “/新闻” 网址,而是“/新闻/新闻“正在生成。我猜是使用默认路由。 所以问题是为什么NewsRoute被跳过?

+0

看起来像禁止使用 – bogert

回答

1

的解决方案是用2个可选参数的路线和动作拆分到两个独立的动作:

routes.MapRoute(
    "NewsRoute", 
    "News", new { 
     controller = "News", 
     action = "Index" 
    } 
); 

routes.MapRoute(
    "Specific News", 
    "News/{id}/{title}", 
    new { 
     controller = "News", 
     action = "News", 
     title = UrlParameter.Optional 
    } 
); 
+0

请标明此为答案,如果问题得以解决2个可选paratemers –