0

我将 IIS 服务器中的默认目录设置为 MVC 4 Razor 应用程序。我进行了设置,以便可以将动态操作传递到 url。例如。

www.mydomain.com/4
www.mydomain.com/5

基本上这两个启动帐户分别用于 id 为 4 和 5 的用户。

效果很好。

但是,我在同一台服务器上有一个名为 admin 的虚拟目录。我希望我可以导航到 www.mydomain.com/admin 但遗憾的是 MVC 拦截了它并认为我正在查找 amdin 的用户 ID。

有没有办法在路由中戳洞以允许虚拟目录?

提前致谢!

/埃里克

########## 添加我的路线
        //route for site root
        routes.MapRoute(
        "YourRouteName", // Route name
        "{flightNumber}/{action}", // URL with parameters
        new { controller = "Home", action = "Index", flightNumber = " " } // Parameter defaults
        );
4

1 回答 1

0

你可以限制你的路线:

routes.MapRoute(
    "YourRouteName",
    "{flightNumber}/{action}",
    new { controller = "Home", action = "Index" },
    new { flightNumber = @"\d+" }
);

现在要求您必须始终拥有flightNumber一个或多个数字,后跟可选的控制器操作。

因此/5会触发控制器的Index动作Home并传递它的flightNumber = 5参数,并且/5/admin会触发控制器的Admin动作Home并传递它的flightNumber = 5参数。

现在,如果您的 id 不是整数而是字符串,事情会变得复杂,因为路由引擎将不再能够消除您的路由歧义。您可以action使用 RegEx 将部件限制为可能的操作列表,但发现这种方法有点限制,因为如果有人向 Home 控制器添加新操作,他还需要更新路由约束。

于 2013-01-14T21:52:26.710 回答