我对外部剃刀视图有疑问。在我的项目中,我有主 mvc Web 程序集和动态加载的外部类库程序集(来自 DB),它们有自己的控制器、视图和模型。这些程序集不会在运行时直接引用和加载。
我能够通过为控制器创建一个自定义控制器工厂来使整个系统工作,控制器是视图的自定义虚拟路径提供程序。视图是我的外部程序集中的嵌入资源。
我遇到的问题是,当我使用来自外部程序集的模型类创建强类型外部视图时,无法在运行时编译视图,因为程序集没有传递给剃刀编译器。所以我收到以下错误:
编译器错误消息:CS0234:命名空间“MyNamespace”中不存在类型或命名空间名称“MyPlugin”(您是否缺少程序集引用?)
源错误:
public class
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel>
{
当我使用动态模型、来自我的主 Web 程序集或来自我的 Web 项目中直接引用的程序集的模型类时,它工作正常。我确定在编译外部剃须刀视图之前加载了外部程序集,因为我的控制器工作得很好。
我开始查看 RazorGenerator 项目以预编译我的外部视图,但无法取得任何进展(没有生成任何内容)而且我什至不确定我是否正在寻找正确的方向,因为我的程序集已加载运行时,我必须使用我自己的 ViewEngine 和 ControllerFactory。