c# - MVC 5 自定义 ViewEngine 加载外部 Controller 和 View

标签 c# asp.net-mvc asp.net-mvc-5 external viewengine

要求

我有一个项目,其中一个要求是加载外部小网站,例如插件。 当然,这个网站必须满足一些要求(例如 mvc 和 net 版本以及其他更多要求以使其兼容)。

此插件必须分配在我的 MVC 网站内的新文件夹中。其中有Views文件夹和编译的网站dll结果( Controller ,模型......)

当前发展

我实现了一个自定义的ViewEngine来从此文件夹加载 View ,并实现了一个ControllerFactory来为不在我的主网站中的 Controller 提供技巧。

我的代码基于 http://christianjvella.com/wordpress/mef-mvc-defining-controllerfactory/对于 ControllerFactory 和 Can I specify a custom location to "search for views" in ASP.NET MVC?对于 ViewEngines

问题

一切似乎都可以很好地与简单的 html View 配合使用。但是,当我使用一些 MVC 帮助程序或对象(例如 ViewBag、@Url.Content、@Html.DropDownList)时,出现错误,指出该对象为 null 或不存在。

重写ViewEngine中的CreateView方法,它正确返回一个IView实例,并且controllerContext具有ViewBag和其他必要的功能。

看来,在 View 渲染时,MVC 并没有将controllerContext附加到 View 实例......

这是 MVC 的限制吗?它不会将 controllerContext 传递给外部加载的 View 或外部 Controller ?有什么想法或解决方法吗?

最佳答案

您的 View 必须预先编译。您可以使用预编译的 MVC View 来执行此操作。 预编译 View 是使用名为 RazorGenerator 的 VS Addin 创建的。 。

您可以在此处阅读更多相关信息,下面的示例将 View 放入单独的类库中! ,您正在寻找的一些东西:

http://www.c-sharpcorner.com/UploadFile/97fc7a/article-precompiled-razor-view-using-razorgenerator-mvc-and/

关于c# - MVC 5 自定义 ViewEngine 加载外部 Controller 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189670/

相关文章:

c# - IQueryable 可选 OrderBy 与 PredicateBuilder 和 Entity Framework

c# - 允许使用 AES 256 为 HMAC 解密任何数据

.net - .Net 上有 URL 验证器吗?

c# - 简单登录的 MVC 模式中组件的职责是什么

c# - 将非托管类型结构指针转换为托管类型结构指针

c# - 在 LINQ 求和表达式中处理 null

jquery - ASP.NET MVC 使用带有模型绑定(bind)的 JQuery DatePicker

c# - 对象引用未设置为对象的实例 asp.net c#

asp.net-mvc-5 - 如何在搜索字符串 CustomerName 时使用 MVC 5 SearchBox 获取 int ID

c# - 使用多个主机设置 CORS 配置