如何扩展MVC查找视图的位置

时间:2011-09-13 21:14:33

标签: c# asp.net-mvc-3

我是一个具有离散模块概念的应用程序。这些模块将存在于Modules文件夹中。每个模块在此Modules文件夹下都有一个文件夹。然后,这些模块文件夹下面会有一个Controllers和Views文件夹,与Areas的工作方式非常相似。

我想扩展/更改搜索的搜索位置,以便当我的模块控制器返回视图时,将搜索新的位置。

我认为这需要涉及一个自定义ViewEngine,但我不确定具体细节。是否有我可以扩展的特定视图引擎,或者我是否需要从头开始编写新的视图引擎。

编写自定义视图引擎是正确的方法,还是有更好的路径?

2 个答案:

答案 0 :(得分:1)

  

我认为这需要涉及自定义ViewEngine

Correct thinking

答案 1 :(得分:0)

您可以实现视图引擎包装,而不是扩展特定的视图引擎,这样您定位视图的自定义逻辑就可以与多个视图引擎一起使用。通过临时替换controllerContext.RouteData.Values中的控制器值,这就是MvcCodeRouting的工作原理,因此当使用位置格式(例如~/Views/{1}/{0}.aspx)时,您可以向这些占位符注入您的自定义位置。