【发布时间】:2019-06-13 00:29:02
【问题描述】:
我有一个通用的 ASP.Net Core 控制器,我希望它根据路由执行不同的操作。我的想法是映射不同的路由以使用相同的控制器,其中每个映射将根据路由设置不同的模式。 http://Website/Route1 将映射到 Mode1,http://Website/Route2 将映射到 Mode2
routes.MapRoute(
name: “Route1”,
template: “Route1” + "/{*queryParameters}",
defaults: new { controller = "GenericProcess", action = "RunGenericProcess", mode = “Mode1”, }
);
routes.MapRoute(
name: “Route2”,
template: “Route2” + "/{*queryParameters}",
defaults: new { controller = "GenericProcess", action = "RunGenericProcess", mode = “Mode2”, }
);
这在用户不提供模式参数时有效,但任何人都可以通过显式提供模式参数来绕过我设置为默认值的值。
http://Website/Route1/?mode=Mode2
我有什么方法可以为路由映射指定硬值,而不是可以覆盖的默认值?是否有另一种方法可以实现我的最终目标,即构建一个多用途控制器,让我根据路由指定模式?
【问题讨论】:
-
mode是什么意思?与我们分享控制器的定义。 -
@TaoZhou,想象一下控制器动作内部模式的 switch 语句。我希望能够根据路由指定模式参数,而不让用户能够使用我不想要的路由设置模式。
标签: asp.net-core asp.net-core-mvc