1

让我们在我的应用程序启动时注册以下路线:website.com/slug -> page1.aspx

但我怎样才能像这样重新注册该路线:website.com/slug -> page2.aspx

我知道我可以清除我的 RouteTable 并再次注册我的路线,但这会弄乱网站上每个人的路线。

有没有办法为特定用户注册新路线?

4

1 回答 1

1

您希望始终可以编写自己的自定义 Route 类,根据用户的用户名/角色成员身份将用户重定向到特定区域......虽然重定向也可以是您登录操作的一部分

    [HttpPost]
    public ActionResult Login(LoginCredentials user)
    {
        // authenticate
        ...
        if (User.IsInRole("admin"))
        {
            return this.RedirectToAction("Index", "User", new { area = "Admin" });
        }
        return this.RedirectToAction("Index", "User");
    }

    This action assumes there's Admin area in your application.
    Custom route constraint

另一种可能性是有自定义路由约束。因此,您实际上会定义两条路线,但一条路线具有特定的约束:

    routes.MapRoute(
        "Admin", // Route name
        "{controller}/{action}/{id}", 
        new { area = "Admin", controller = "User", action = "Index", id = UrlParameter.Optional },
        new { isAdmin = new AdminRouteConstraint() }
    );
    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", 
        new { controller = "User", action = "Index", id = UrlParameter.Optional } 
    );

这样,您就可以将管理员路由到应用程序的管理区域,并为他们提供他们在那里拥有的特定功能。但这并不意味着他们需要一个管理区域。这只是我的路线定义。您可以按照您想要的方式定义路由默认值。

于 2013-01-25T16:53:47.320 回答