MVC5在区域中使用两个参数进行路由

时间:2015-01-26 15:51:28

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing

我有一个名为News的区域,在该区域内我有一个Post Controller。帖子控制器具有以下操作:

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+"}
    );      

我也试过没有名称对象属性,有和没有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

我有这个路由的噩梦。我试图搞乱路由属性,但也没有运气区域......任何想法的人?

1 个答案:

答案 0 :(得分:0)

所以我通过使Route看起来像这样解决了部分问题:

       context.MapRoute(
            "News",
            "News/Post/{id}/{name}",
            new { action = "Index", controller = "Post" },
            new { id = @"\d+" }
        );

因此我删除了名称参数的UrlParamter.Optional。我需要真正了解其中一些路线是如何工作的。有时它很容易,但其他人我无法做到最简单的事情。