如何让 routelink 返回正确的 URL?

Der*_*ang 4 asp.net-mvc asp.net-mvc-routing routelink

这是复制问题的程序。

  1. 启动新的 mvc 4 项目。
  2. 将以下行添加到 RegisterRoutes() 方法中的“默认”路由之前

    routes.MapRoute(
            name: "Test",
            url: "Test/{action}",
            defaults: new { controller = "Test", action = "Index" }
    );
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将以下内容添加到 Index.cshtml 和 About.cshtml

    @Html.RouteLink("link to TestController", "Test")
    
    Run Code Online (Sandbox Code Playgroud)

如您所见,生成的 html 代码对于 2 个页面是不同的。我希望 URL 是“/Test”,它为 Index.cshtml 正确呈现,但它成为 About.cshtml 的“/Test/About”。

我的问题是是否有任何记录的方法来生成相同的正确 URL。上面的例子只是为了演示目的而创建的。我想使用路由表信息来生成菜单。

McG*_*gle 5

似乎引擎正在action从当前页面(“索引”、“关于”)设置路由值。因此,解决此问题的一种方法是“取消设置”该路由值:

@Html.RouteLink("link to Test Controller", "Test", new { action = String.Empty })
Run Code Online (Sandbox Code Playgroud)