外部剃刀视图看不到外部模型

问题描述 投票:0回答:3

我对外部剃须刀视图有疑问。 在我的项目中,我有主 mvc Web 程序集和动态加载的外部类库程序集(来自数据库)及其自己的控制器、视图和模型。这些程序集不是在运行时直接引用和加载的。

我能够通过为控制器创建自定义控制器工厂(为视图创建自定义虚拟路径提供程序)来使整个系统正常工作。这些视图是我的外部程序集中的嵌入资源。

我遇到的问题是,当我使用外部程序集中的模型类创建强类型外部视图时,视图无法在运行时编译,因为程序集未传递给 razor 编译器。所以我收到以下错误:

编译器错误消息:CS0234:类型或命名空间名称 命名空间“MyNamespace”中不存在“MyPlugin”(您是否缺少 组装参考?)

来源错误:

public class
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel>
{

当我使用动态模型、主 Web 程序集中的模型类或直接在我的 Web 项目中引用的程序集时,它工作得很好。我确信在编译外部剃刀视图之前加载了外部程序集,因为我的控制器工作得很好。

我开始查看 RazorGenerator 项目来预编译我的外部视图,但无法取得任何进展(没有生成任何内容),而且我什至不确定我是否在寻找正确的方向,因为我的程序集已加载在运行时,我必须使用自己的 ViewEngine 和 ControllerFactory。

c# asp.net asp.net-mvc-4 razor razorgenerator
3个回答
1
投票

尝试在动态程序集中的视图中使用 using 指令。

@using MyNamespace.MyPlugin.Models;
@using MyNamespace.MyPlugin;

等等


0
投票

我能够在程序集中使用 RazorGenerator Visual Studio 扩展(不是

RazorGenerator.Mvc
一个)预编译视图。

它基本上在程序集编译之前将

.cshtml
剃刀视图转换为带有
.cs
类的
WebViewPage
文件。 在我的网络项目中,我必须实现自己的
VirtualPathProviderViewEngine
,类似于这个


0
投票

你可以尝试一下吗...

@使用全局::共享.模型;

...在您的剃须刀页面上

这对我有用,我可以访问我的项目中导入的模型。

© www.soinside.com 2019 - 2024. All rights reserved.