MVC vNext路由和ActionLink

时间:2015-01-14 15:32:02

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

MVC 6 - 使用Core 5.0的vNext

我在项目中使用了一条路线,如下所示:

routes.MapRoute(
    name: "Default",
    template: "{firstId}/{secondId}",
    defaults: new { controller = "Window", action = "Index" });

在我的一个观点中,我尝试创建一个ActionLink,如下所示:

@Html.ActionLink("Title", "Index", "Window", new { firstId = "a", secondId = "b" }, null);

ActionLink返回以下锚点:

<a href="/Window?firstId=a&secondId=b">Test</a>

但我期待的是:

<a href="/a/b">Test</a>

任何人都可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

我认为问题可能只是您使用template属性而不是url。看了MSDN我在template课程上找不到Route属性,你实现了自己的属性吗?

在任何情况下,我认为这应该有效(假设您没有按照您的说法定义其他路线):

routes.MapRoute(
    name: "Default",
    url: "{firstId}/{secondId}",
    defaults: new { controller = "Window", action = "Index" }
); 

答案 1 :(得分:-1)

这是路线:

 routes.MapRoute(
     "Default",
     "Window/Index/{firstId}/{secondId}",
     new { controller = "Window", action = "Index" });

将产生以下结果:

<a href="Window/Index/a/b">Test</a>