ASP.NET MVC路由问题

时间:2008-12-16 17:00:00

标签: asp.net-mvc routes

我想在ASP.NET MVC应用程序中映射两个路由

  1. /用户/登录
  2. /用户/ {userid} / {username} / {action}(例如/ User / 1 / blah / profile)
  3. 以下是我定义的路线:

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

    到目前为止,这在大多数情况下都很有用。以下网址适用于我的主页:

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

    这些映射到(尊重地):

    /用户/登录 /用户/ 1 /嗒嗒

    然而,一旦我导航到/ Users / 1 / blah,登录URL立即转为/ Users / 1 / blah / login。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您想使用<%=Html.RouteLink%>

这与problem I had which you can view here

非常相似

答案 1 :(得分:0)

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

那么,如果它不是授权过滤器,我高度建议你在项目中实现这个Routing Debugger Tool