【问题标题】:How to extend where MVC looks for views如何扩展 MVC 查找视图的位置
【发布时间】:2011-09-13 21:14:32
【问题描述】:

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

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

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

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

【问题讨论】:

  • 可以在单独的项目甚至单独的解决方案中拥有区域。也可以使虚拟目录中的区域指向不在基本应用程序树中的文件夹,但具有它们自己的 bin 文件夹。这类似于我们在企业网站中的内容。我们在 ASP.Net Forms 中有它,但我已经为 MVC3 编写了一个带有区域的实现。如果我现在不在家,我会和你分享。关键是 appdomain 中的 AssemblyResolve 事件。

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


【解决方案1】:

我认为这需要一个自定义 ViewEngine

Correct thinking.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多