我的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
);
答案 0 :(得分: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
控制器传递action
参数。
现在,如果您的ID不是整数,但字符串会变得复杂,因为路由引擎将无法再消除您的路由歧义。您可以使用RegEx将{{1}}部分约束到可能的操作列表,但发现这种方法有点限制,因为如果有人向Home控制器添加新操作,他还需要更新路由约束。