1

我有两条路线要映射到我的 ASP.NET MVC 应用程序中

  1. /用户登录
  2. /User/{userid}/{username}/{action}(例如 /User/1/blah/profile)

以下是我定义的路线:

    routes.MapRoute(
        "Profile",
        "Users/{userID}/{username}/{action}",
        new { controller = "Users", action = "Profile" }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" }
    );

到目前为止,这在大多数情况下都非常有效。以下 URL 可在我的主页上使用:

<%= Html.ActionLink((UsersController x) => x.Login(), "Login") %>
<%= Html.ActionLink((UsersController x) => x.Profile(1, "blah") %>

这些映射到(恭敬地):

/Users/登录 /Users/1/blah

但是,一旦我导航到 /Users/1/blah,登录 url 立即变为 /Users/1/blah/login。知道如何解决这个问题吗?

4

2 回答 2

1

你想用<%=Html.RouteLink%>

这与我遇到的问题非常相似,您可以在此处查看

于 2008-12-17T16:06:07.320 回答
0

您的路线是否符合授权过滤器?是否需要登录才能查看 /Users/1/blah 页面?(即,UsersController 类或 Profile Action 上是否有 [Authorize] 属性?)

那么,如果它不是授权过滤器,我强烈建议您将此路由调试器工具实施到您的项目中。

于 2008-12-16T21:17:56.940 回答