在ASP.Net MVC中拦截控制器/视图的分辨率以进行自定义的位置?

我试图找出适当的位置来截取ASP.Net MVC 2中调用的视图控制器的分辨率.我有一种情况,我有一个控制器和一组相应的视图.我也有可能定制版本的控制器和位于项目中的N个视图(或者我们可以使用类似于MvcContrib项目中的Portable Views).如果控制器或视图的自定义版本在运行时存在,并且用户满足某些条件,则需要调用自定义控制器并使用适当的自定义视图.在设计/编译时,我们不知道可能有哪些自定义.

我的第一次尝试是使用自定义控制器工厂,如果它存在,则返回自定义控制器.但是,此控制器已“连接”到标准视图,如果它也存在,我无法弄清楚如何返回自定义视图.

更复杂的是,可能没有自定义控制器而是自定义视图,反之亦然.

最佳答案 听起来你走在正确的轨道上.您已经有了自定义控制器选择逻辑,但您还需要具有自定义视图选择逻辑.

您可以覆盖和扩展默认的ViewEngine以插入您的应用程序,该应用程序使用您自己的逻辑来查找视图位置. Here’s a good walkthrough of a simple ViewEngine正是如此.

点赞