要求
我有一个项目,其中一个要求是加载外部小网站,例如插件。 当然,这个网站必须满足一些要求(例如 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 放入单独的类库中! ,您正在寻找的一些东西:
关于c# - MVC 5 自定义 ViewEngine 加载外部 Controller 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189670/