我正在创建一个站点,我想在其中动态添加页面。因此,我希望有一个更简单的 URL。我的目标是像下面这样的 URL:
http://www.mysite.com/my-page-url
而不是像下面这样的 URL:
http://www.mysite.com/pageController/my-page-url
MVC URL 往往像这样工作:|url|/|controller|/|action|/|params|
我想做的是:|url|/|params|
对于上面的 URL,如果参数的值不等于 Controller 的名称,那么我想将这些参数传递给 PageContoller.ProcessDynamicPage。
最佳答案
根据您的默认参数,您可以创建一个 route constraint
routes.MapRoute(
"Default",
"{Param1}",
new { controller = "ProcessDynamicPage", action = "YourAction" },
new {Param1= @"\d+" }
);
如果您的参数是整数,这将起作用。
如果您的默认参数是字符串或其他内容,并且您无法创建正则表达式或无法实现 IRouteConstraint
的内容,您最好的选择是为您的每个 Controller 创建一个匹配的操作当它落入默认值时,您已经尝试进行匹配。
routes.MapRoute(
"YourController",
"YourController\{Param1}",
new { controller = "YourController", action = "YourAction" }
}
);
routes.MapRoute(
"YourController2",
"YourController2\{Param1}",
new { controller = "YourController2", action = "YourAction" }
}
);
routes.MapRoute(
"Default",
"{Param1}",
new { controller = "ProcessDynamicPage", action = "YourAction" }
);
如果您有很多 Controller ,您可能真的应该研究如何根据您的期望创建约束。
关于c# - MVC——默认 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130277/