【发布时间】:2023-04-09 02:21:02
【问题描述】:
我对外部剃须刀视图有疑问。 在我的项目中,我有主 mvc Web 程序集和动态加载的外部类库程序集(来自 DB),它们有自己的控制器、视图和模型。这些程序集不会在运行时直接引用和加载。
我能够通过为 Controllers 创建一个自定义控制器工厂来使整个系统工作,这是一个用于 Views 的自定义虚拟路径提供程序。视图是我的外部程序集中的嵌入资源。
我遇到的问题是,当我使用来自外部程序集的模型类创建强类型外部视图时,无法在运行时编译该视图,因为该程序集未传递给剃刀编译器。所以我收到以下错误:
编译器错误消息:CS0234:类型或命名空间名称 命名空间“MyNamespace”中不存在“MyPlugin”(您是否缺少 汇编参考?)
来源错误:
public class
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel>
{
当我使用动态模型、来自我的主 Web 程序集或来自我的 Web 项目中直接引用的程序集的模型类时,它工作正常。我确信在编译外部剃刀视图之前加载了外部程序集,因为我的控制器工作得很好。
我开始查看 RazorGenerator 项目以预编译我的外部视图,但无法取得任何进展(没有生成任何内容)而且我什至不确定我是否正在寻找正确的方向,因为我的程序集在运行时加载,我必须使用自己的 ViewEngine 和 ControllerFactory。
【问题讨论】:
-
您是否尝试过此处提到的任一选项:stackoverflow.com/questions/4953330/…
-
@Brent 我无法在 web.config 中引用我的程序集,因为它们在 web 应用程序启动之前不可用。否则,它会解决问题。
-
@Maskim 您引用了多少外部程序集?是只有一个,还是有几个?
-
如果在运行时加载,您能否解释一下您的控制器如何在编译期间找到这些模型?你不是从你的控制器中引用它们吗?
-
@Pranav 控制器、模型和视图都在同一个加载的程序集中,因此它们与模型一起编译。
标签: c# asp.net asp.net-mvc-4 razor razorgenerator