Asp.net mvc 3 url.Action和Html.ActionLink生成的url不正确
我有以下路线:Asp.net mvc 3 url.Action和Html.ActionLink生成的url不正确,asp.net-mvc-3,routes,Asp.net Mvc 3,Routes,我有以下路线: routes.MapRoute( "NewsRoute", "News/{newsId}/{newsTitle}", new { controller = "News", action = "News", newsId = UrlParameter.Optional, newsTitle = UrlParameter.Optional } ); routes.MapRoute(
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 = "" })
我希望有“/News”url,但正在生成“/News/News”。我想是使用了默认路线。
所以问题是为什么跳过新闻路线?解决方案是使用两个可选参数和操作将路线拆分为两个单独的操作:
routes.MapRoute(
"NewsRoute",
"News", new {
controller = "News",
action = "Index"
}
);
routes.MapRoute(
"Specific News",
"News/{id}/{title}",
new {
controller = "News",
action = "News",
title = UrlParameter.Optional
}
);
解决方案是使用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
}
);
看起来像2个禁止使用的可选辅助设备看起来像2个禁止使用的可选辅助设备