动态加载程序集中的强类型 Razor 视图不会在运行时编译

2024-02-26

我在程序集中有一个 MVC3 区域动态加载与MEF。
如果我使用具有强类型视图的 Webforms 视图引擎,一切都会正常工作。
如果我将 Razor 视图引擎与dynamic模型,效果也很好。

但如果我使用强类型 Razor 视图,视图编译在运行时失败。

问题是动态加载的程序集不在传递给 C# 编译器的引用程序集列表中。

生成的 C# 代码如下所示:

namespace ASP {
    using System;
    /* Other namespaces */
    public class _Page_MyApp_Views_Home_Index_cshtml
        : System.Web.Mvc.WebViewPage<MyApp.ViewModels.Search.IndexViewModel> {
    /* Generated code */
    }
}

这是错误消息:

Compiler Error Message: CS0246: The type or namespace name 'MyApp' could not be found (are you missing a using directive or an assembly reference?)

您知道为什么这适用于 Webforms 视图引擎但不适用于 Razor 吗? 有没有办法告诉编译器使用我的动态加载的程序集进行编译?

Thanks


当强类型视图的编译由于无法找到类型而失败时,我遇到了类似的问题。 一种解决方案是创建继承自 RazorBuildProvider 的自定义构建提供程序:

public class CustomRazorBuildProvider : RazorBuildProvider
{
  public override void GenerateCode(System.Web.Compilation.AssemblyBuilder assemblyBuilder) 
  {
    Assembly a = Assembly.LoadFrom([PATH_TO_YOUR_ASSEMBLY]);
    assemblyBuilder.AddAssemblyReference(a);      
    base.GenerateCode(assemblyBuilder);
  }

}

然后你需要在 web.config 中注册这个自定义构建提供程序:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
  ...
  </assemblies>
  <buildProviders>
    <remove extension=".cshtml" />
    <add extension=".cshtml" type="YouAssembly.CustomRazorBuildProvider, YourAssembly"/>
  </buildProviders>
</compilation>

它可以工作,但坏处是每次编译视图时都需要引用程序集。

Here https://stackoverflow.com/questions/8285474/mef-and-mvc-3-how-to-load-embedded-views-dynamically-from-mef-container,我发布了一个更好的解决方案的问题(例如类似于 AppDomain.CurrentDomain.AddPrivatePath),您只需指定一次私有路径,并且它将在目录级别,而不是程序集级别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态加载程序集中的强类型 Razor 视图不会在运行时编译 的相关文章

  • Razor 如何创建一个复选框并使其只读?

    我正在使用 MVC 3 和 Razor 目前我正在使用 model MyProject ViewModels MyViewModel foreach var item in Model MyProperty tr td Html Actio
  • 仅为登录用户显示菜单项

    我是 ASP NET MVC 新手 正在使用该框架的 1 0 版本 我有一个 site master 页面 其中包含以下硬编码菜单 div ul li li li li li li li li ul div
  • 为什么要调用base.OnActionExecuting(filterContext);?

    我只是在看我的一些旧代码 我有一个动作过滤器 OnActionExecuting 方法 最后我有 base OnActionExecuting filterContext 为什么到处搜索我都看到这个很多次了 我还看到 在我的旧授权标签中 我
  • 如何在 asp.net mvc 中跨应用程序进行表单身份验证

    如何在 asp net mvc 中跨应用程序进行表单身份验证 假设有两个网站 www xyz com 和 www abc com 我必须对两个站点使用相同的用户凭据 如果我将一个应用程序重定向到另一个应用程序 那么它不会要求登录 如果应用程
  • 有没有办法在 jqgrid treeGrid url 请求中传回附加数据?

    i am 使用 jqgrid 树视图 http www trirand com jqgridwiki doku php id wiki 3atreegrid我正在传回 json 响应 效果很好 我想将一些有关请求的附加信息传递回 GUI 并
  • 如何在 ASP.NET MVC 中使用 Html.Action() 将参数传递给 Action?

    我一直在使用Html Action ActionName ControllerName 跨控制器调用子操作 而无需在 Views Shared 中拥有视图 这对于显示会话或 cookie 信息等内容非常有效 我不只是访问 cookie 而是
  • ASP.NET MVC 粘贴到剪贴板

    我有一个 ASP NET MVC 4 应用程序 我想复制文本 从 PDF CTRL C 并将其作为参数粘贴到控制器的方法中 我的网络网格有一个带有 ActionLink 的列 grid Column format a href Url Ac
  • ASP.Net MVC AJAX 链接不起作用

    为了实现 AJAX 登录 我在我的页面上有这个链接 附近有一个 id 为 lll 的 div 当我单击该链接时 我得到了无聊的确认 只是出于调试目的而添加 没有它的行为是相同的 但然后什么也没有发生 没有请求到达服务器 因为我在 LogOn
  • 当checked属性为false时,单选按钮默认被选中?

    我正在尝试生成单选按钮 有条件地检查检查的属性 如果该值存在于数据库中 则应选择它 否则检查的属性为 false 所以最初数据库中没有行 所有单选按钮的检查属性也为 false 但仍然在 UI 上选择 请参见下图 所以不知道这是默认行为还是
  • CSS、Javascript 和图像的长度为零

    我正在尝试将 ASP NET MVC 1 0 Visual Studio 2008 项目移植到 ASP NET MVC RC 2 Visual Studio 2010 该项目 并且一直 在 IIS 7 上运行 动态内容 由控制器提供的所有内
  • 如何使用 JavaScript 发布 ASP.NET MVC Ajax 表单而不是提交按钮

    我有一个使用创建的简单表单Ajax BeginForm Description br
  • 如何告诉 razor 不要 html 转义

    我在一个项目中使用 asp net mvc 3 和 razor 在某些情况下 我需要从控制器序列化数组 将其放入视图数据中并将其分配给 js 对象 但是当我使用它输出时 ViewData some array 结果是 html 转义所以我得
  • 将 {sitename} 参数传递给 MVC 控制器操作

    我怎样才能检索站点范围的 URL 参数在路线中而不用参数使每个控制器操作混乱 我的问题类似于这个问题 https stackoverflow com questions 235118 asp net mvc route to usernam
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 如何在使用 ajax 和 JQuery 时加密发布数据?

    服务器端我们可以对用户进行身份验证 但我希望 ajax 或 JQuery 发送数据时数据安全 就像在客户端一样 某人只能看到加密格式的任何调用的参数 那么我该怎么做呢 我在这个网站上看到过这个场景 EDIT 当数据来自服务器时 我们可以忽略
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab
  • 尝试使用 VS 2012 打开我的 asp.net 4.5 MVC Web 应用程序时出错。Asp.net 尚未在服务器上注册

    我有一个Windows Server 2012 R2 Visual Studio 专业版 2012 现在我用来开发 ASP NET 4 5 MVC 4 Web 应用程序 没有任何问题 但现在当我尝试打开该项目时 我会收到此错误 如果我单击
  • Asp.Net MVC3 Razor - 子项目列表未从编辑器发回

    我正在尝试在 MVC3 中创建一个多级编辑器 我所说的多级是指我希望能够编辑三个层次结构级别的数据 父对象 父对象的子对象和子子对象的集合 我的模型大致如下 namespace MvcApplication1 Models public c

随机推荐

  • 异常后重置 Cuda 上下文

    我有一个使用 Cuda C 的工作应用程序 但有时 由于内存泄漏 会引发异常 我需要能够实时重置 GPU 我的应用程序是服务器 因此它必须保持可用 我尝试过类似的方法 但似乎不起作用 try do process using GPU cat
  • ifstream 相当于 FILE * 的倒回方法

    我的任务是将一些 C 代码更新为 C 并且很好奇 ifstream 中 C FILE 的倒带方法的等效方法或实现是什么 那将是seekg http en cppreference com w cpp io basic istream see
  • 通过另一个列表过滤一个列表 C#

    我有以下业务对象 public class ItemCategoryBO public string ItemCategory get set public string Title get set public class ItemBO
  • 填充 std::tuple

    我有一个重载函数 如下所示 template
  • Javascript 获取 Flask json

    所以我试图将 Flask 服务器连接到前端创建反应应用程序 现在我只想验证我是否可以在两者之间发送 json 下面是每个错误的代码以及更多关于错误的描述 创建 React App 获取 import React Component from
  • 使用 Networkx 绘制带边的图

    我一直被一件很简单的事情所困扰 我正在尝试绘制并显示一个具有 2 个节点和 1 个边的图 但我收到这个错误 Traceback most recent call last File
  • 安装 MySQL-python

    我在尝试在我的 Ubuntu Linux Box 上安装 MySQL python 时遇到以下失败 从下面来看 问题似乎是sh mysql config not found有人可以建议我该怎么做吗 rmicro ubuntu pip ins
  • CSS 类定义在 元素内不起作用

    你们能告诉我为什么 css 类定义在下面的示例中不起作用吗 我正在使用 GWT 2 4 Chrome 17
  • 历史推送状态和滚动位置

    当用户使用 HTML5 popstate 处理程序导航回浏览器历史记录时 我尝试检索滚动位置 这是我所拥有的 document ready function window on popstate PopStateHandler link c
  • 是否可以像来自用户一样向 Bot Framework 发送消息?

    我正在使用 Direct Line 3 0 和 Microsoft Bot Framework 并要求网页将一些表单字段发送到机器人 就像用户发送它们一样 例如 当用户按下 提交 时 电子邮件 电话等字段将被发送到机器人 就像用户这样发送它
  • 获取精灵部分偏移量

    我正在尝试获取 elf 文件每个部分的偏移量和数据 我已经有了包含以下代码的部分名称 include
  • Python - 保存在 GNU Nano 2.2.4 中编辑的文件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对编程 使用 Raspberry
  • 调试 Outlook 插件桌面

    我目前正在使用 yeoman 和生成器办公室为 Outlook 开发一个插件 以将电子邮件及其附件保存到另一项服务 Outlook 版本 MS Office Professional Plus 2016 v 16 0 48 49 1000
  • 提交表单时,表单 onSubmit 函数不会触发

    我看过了 找不到任何像我的问题一样的东西 我有一个表格无法进行验证 我知道 JavaScript 文件正在加载 因为页面上的其他功能正在正常工作 我的代码如下
  • 在 Swift 3 中以编程方式使用 ScrollView

    我搜索了其他问题 似乎在 swift 3 中使用自动布局以编程方式创建滚动视图时仍然遇到一些问题 我能够让我的滚动视图显示如下图所示 但是当我滚动到底部时 我的其他标签却出现了问题不显示 滚动顶部 标签也不会消失 希望有人可以帮助查看我下面
  • 将类添加到表单字段 Django ModelForm

    我正在尝试使用 Django ModelForm 编写 Bootstrap 表单 我已阅读 Django 文档有关表单的 Django 文档 https docs djangoproject com en dev topics forms
  • Android Retrofit 2,用于编辑响应的 addInterceptor 和 addNetworkInterceptor 之间的差异

    我一直在尝试实现一个拦截器 OkHttp 3 2 和改造 2 用于在作为响应返回之前编辑 JSON 响应 我们请求数据的服务器根据成功或错误返回不同的数据 这使得映射对象变得困难 我试图通过将拦截器添加到 Retrofit 作为 Netwo
  • 去哪一个; Yii 或 Symfony

    好的 我是NOT询问哪一个更好 我知道 Yii 并不比 Symfony 好 Symfony 也不比 Yii 好 我想问的是我应该选择哪一个呢 我想提出几点 我有一个大型项目 格式非常好 编码也非常好 如果您看到我的代码 您会认为我制作了自己
  • Java Process无法通过Runtime.getRunTime().exec()获取InputStream

    try String str Process process Runtime getRuntime exec bash home abhishek workspace Pro run InputStream isout process ge
  • 动态加载程序集中的强类型 Razor 视图不会在运行时编译

    我在程序集中有一个 MVC3 区域动态加载与MEF 如果我使用具有强类型视图的 Webforms 视图引擎 一切都会正常工作 如果我将 Razor 视图引擎与dynamic模型 效果也很好 但如果我使用强类型 Razor 视图 视图编译在运