我正在尝试使用嵌入视图的 ASP.NET MVC 3 (razor) 插件机制,如此处所述,我将视图引擎更改为从 RazorViewEngine 继承,但除此之外并没有真正改变任何东西。现在我在插件程序集中调用一个控制器操作,它呈现一个视图,这工作正常。但是视图找不到_viewstart.cshtml,因此没有布局。理想情况下,我想让主机应用程序定义 viewstart 和布局。可能我不应该直接调用插件控制器操作,而是只渲染插件的部分内容,让主机应用程序处理主控制器/视图。
这些是在我自己的 VirtualPathProvider 中尝试的 viewstart 位置:
"~/Plugins/MyMvcApplication.dll/_ViewStart.cshtml"
"~/Plugins/MyMvcApplication.dll/_ViewStart.vbhtml"
"~/Plugins/_ViewStart.cshtml"
"~/Plugins/_ViewStart.vbhtml"
"~/_ViewStart.cshtml"
"~/_ViewStart.vbhtml"
我也在考虑忘记嵌入视图,因为它看起来有点繁琐,所以我可能会选择将视图复制到主机应用程序,这可以让未来用户更容易调试。风险在于用户会对这些视图进行更改,从而使插件的更新更加困难。我对插件机制产生怀疑的原因之一是可能会影响性能,尽管我还没有进行任何测量。