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

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

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

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

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

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

正确的思考 。

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