【发布时间】:2014-08-07 18:33:49
【问题描述】:
要求
我有一个项目,其中一项要求是加载外部小型网站,例如插件。 当然,这个网站必须满足一些要求(如 mvc 和 net 版本等以使其兼容)。
此插件必须分配在我的 MVC 网站内的新文件夹中。其中有 Views 文件夹和编译的网站 dll 结果(控制器,模型,...)
目前的发展
我实现了一个自定义 ViewEngine 以从该文件夹加载视图,并实现了一个 ControllerFactory,它为不在我的主网站中的控制器提供了技巧。
我的代码基于http://christianjvella.com/wordpress/mef-mvc-defining-controllerfactory/ for ControllerFactory 和Can I specify a custom location to "search for views" in ASP.NET MVC? for ViewEngines
问题
一切似乎都适用于简单的 html 视图。但是,当我使用一些 MVC 帮助程序或 ViewBag、@Url.Content、@Html.DropDownList 等对象时,我有一个错误,即该对象为空或不存在。
重写ViewEngine中的CreateView方法,正确返回一个IView实例,controllerContext具备ViewBag等必要功能。
看起来,在视图渲染的那一刻,MVC 没有将 controllerContext 附加到视图实例......
这是不将 controllerContext 传递给外部加载的视图或外部控制器的 MVC 的限制吗?有什么想法或解决方法吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5 external viewengine