在一个区域中使用两个参数的 MVC5 路由
MVC5 Routing with two parameters in an Area
我有一个名为新闻的区域,在该区域内我有一个 Post 控制器。 post 控制器具有以下操作:
public ActionResult Index(int id, string name)
{
...
}
我在 NewsAreaRegistration 中有一条路线
context.MapRoute(
"News_post",
"News/{controller}/{id}/{name}",
new { action = "Index", controller = "Post",name = UrlParameter.Optional }, new { id = @"\d+"}
);
我也尝试过不使用 name 对象属性,使用和不使用 id @"\d+ .. 我在另一个站点上有这个,设置完全相同,只是很困惑为什么它没有按预期工作.
现在首先,该动作将解决:
http://example.com/News/Post/Index/3
当我希望它解析为
http://example.com/News/Post/3
然后我还想要这个字符串参数在最后,所以它应该解析为
http://example.com/News/Post/3/test-post
而是解析为
http://example.com/News/Post/Index/3?test-post
我对这个路由的东西简直是一场噩梦。我试图弄乱路由属性,但在区域方面也没有运气......有什么想法吗?
所以我通过使路线看起来像这样解决了部分问题:
context.MapRoute(
"News",
"News/Post/{id}/{name}",
new { action = "Index", controller = "Post" },
new { id = @"\d+" }
);
所以我删除了名称参数的 UrlParamter.Optional。我需要真正了解其中一些路线的工作原理。有时它很容易,但有时我无法让它做最简单的事情。
我有一个名为新闻的区域,在该区域内我有一个 Post 控制器。 post 控制器具有以下操作:
public ActionResult Index(int id, string name)
{
...
}
我在 NewsAreaRegistration 中有一条路线
context.MapRoute(
"News_post",
"News/{controller}/{id}/{name}",
new { action = "Index", controller = "Post",name = UrlParameter.Optional }, new { id = @"\d+"}
);
我也尝试过不使用 name 对象属性,使用和不使用 id @"\d+ .. 我在另一个站点上有这个,设置完全相同,只是很困惑为什么它没有按预期工作.
现在首先,该动作将解决:
http://example.com/News/Post/Index/3
当我希望它解析为
http://example.com/News/Post/3
然后我还想要这个字符串参数在最后,所以它应该解析为
http://example.com/News/Post/3/test-post
而是解析为
http://example.com/News/Post/Index/3?test-post
我对这个路由的东西简直是一场噩梦。我试图弄乱路由属性,但在区域方面也没有运气......有什么想法吗?
所以我通过使路线看起来像这样解决了部分问题:
context.MapRoute( "News", "News/Post/{id}/{name}", new { action = "Index", controller = "Post" }, new { id = @"\d+" } );
所以我删除了名称参数的 UrlParamter.Optional。我需要真正了解其中一些路线的工作原理。有时它很容易,但有时我无法让它做最简单的事情。