在一个区域中使用两个参数的 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。我需要真正了解其中一些路线的工作原理。有时它很容易,但有时我无法让它做最简单的事情。