MVC routing/dynamic 控制器
MVC routing/dynamic Controllers
我有一个 MVC 4(无论如何目前)站点,我想将其提供给许多客户。
我以为我有一个聪明的主意,会创建自定义控制器,然后 select 根据参数或其他东西使用它。
每个客户都有自己的安装,因此应该在编译时选择要使用的控制器,而不是 运行 理想情况下。
所以我们的想法是为每个客户创建一个控制器,例如Customer1Controller
、Customer2Controller
等,然后对其进行映射,以便所有客户都使用 http://myserver/Customer
。
我尝试将所有 Customer/{action}
映射到 Customer1/{action}
,但无论如何我找不到将所有操作映射到一个语句中并且每个操作都有一个似乎有点难看。
我的第一个想法是尝试使用依赖注入,但由于具体 类 用于显然不是一个选项的控制器。它也有一些其他的缺点。
实际问题是;无论如何要为行动做一个 "catch all" 吗?像这样:
routes.MapRoute(
name: "Import",
url: "Customer/*/{id}",
defaults: new { controller = "Customer1", action = *, id = UrlParameter.Optional }
);
谢谢./H
The actual question is; is there anyway to do a "catch all" for actions?
是的。默认路由就是一个很好的例子。
routes.MapRoute(
name: "Import",
url: "Customer/{action}/{id}",
defaults: new { controller = "Customer1", id = UrlParameter.Optional }
);
这将使用 URL 中的操作名称构建路由值字典,因此它可以是 "Customer1" 控制器上的任何操作。
也就是说,你的问题不清楚。控制器 是 动态的。除非您对每个客户控制器执行截然不同的操作,否则没有理由需要为每个客户制作一个控制器。
或者,如果您想要让客户创建自己的 URL,您可以使用 .
最重要的是有很多方法可以自定义 URL,但它们不涉及注入 "dynamic controllers",它们利用路由将请求动态传递到特定的控制器操作。
我有一个 MVC 4(无论如何目前)站点,我想将其提供给许多客户。 我以为我有一个聪明的主意,会创建自定义控制器,然后 select 根据参数或其他东西使用它。
每个客户都有自己的安装,因此应该在编译时选择要使用的控制器,而不是 运行 理想情况下。
所以我们的想法是为每个客户创建一个控制器,例如Customer1Controller
、Customer2Controller
等,然后对其进行映射,以便所有客户都使用 http://myserver/Customer
。
我尝试将所有 Customer/{action}
映射到 Customer1/{action}
,但无论如何我找不到将所有操作映射到一个语句中并且每个操作都有一个似乎有点难看。
我的第一个想法是尝试使用依赖注入,但由于具体 类 用于显然不是一个选项的控制器。它也有一些其他的缺点。
实际问题是;无论如何要为行动做一个 "catch all" 吗?像这样:
routes.MapRoute(
name: "Import",
url: "Customer/*/{id}",
defaults: new { controller = "Customer1", action = *, id = UrlParameter.Optional }
);
谢谢./H
The actual question is; is there anyway to do a "catch all" for actions?
是的。默认路由就是一个很好的例子。
routes.MapRoute(
name: "Import",
url: "Customer/{action}/{id}",
defaults: new { controller = "Customer1", id = UrlParameter.Optional }
);
这将使用 URL 中的操作名称构建路由值字典,因此它可以是 "Customer1" 控制器上的任何操作。
也就是说,你的问题不清楚。控制器 是 动态的。除非您对每个客户控制器执行截然不同的操作,否则没有理由需要为每个客户制作一个控制器。
或者,如果您想要让客户创建自己的 URL,您可以使用
最重要的是有很多方法可以自定义 URL,但它们不涉及注入 "dynamic controllers",它们利用路由将请求动态传递到特定的控制器操作。