首页 新闻 会员 周边

关于Asp.net Mvc的插件式中视图查找与Razor引擎的问题。望有经验者给予帮助,非常感谢!!!

0
悬赏园豆:50 [已解决问题] 解决于 2014-12-31 14:39

目前在做一个MVC插件式设计。但是关于虚拟路径和Razor引擎实在是搞不定了。

先说下我的思路。

目前设计的是每个插件DLL中包含了控制器,模型,视图等。我的视图是嵌入到DLL中的。所以我在重写ViewEngin的FindView与FindPartialView时查找的是程序集中的视图。这一步能够找到。

但是问题出在如果此视图仅仅是静态页面等,就不会有问题。但是如果一绑定Model就会报一个

“未创建找到的xxxxxx的视图”。也就是说它找到视图了,只是创建该视图时出错。这是属于什么样的问题。

如果知道的还望指点一二。

罗志强的主页 罗志强 | 初学一级 | 园豆:154
提问于:2014-04-30 11:01
< >
分享
最佳答案
0

MVC 3 无需再使用Razor Generator的,只需要直接编译成嵌入资源。

你可以检查以下几个地方:

  1. 你在DLL内的视图的“生成操作”属性是否已设定为“嵌入的资源” 
  2. 在重写VistualPathProvider的 FileExists()和GetFile()这两个方法你是否有正确地从资源中读出视图的流 
  3. 如果你的DLL不是存于bin 中而是放在其它目录上,那么你需要清掉asp.net 的动态编译缓存 (否则忽略此项)
收获园豆:50
Ray Liang | 菜鸟二级 |园豆:426 | 2014-07-25 15:38
其他回答(2)
0

属于引用问题,你要在生成的时候搜索该DLL的引用,都加载完了再生成视图

吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-30 11:04

你好!是不是在生成视图的时候有一个事件,在此事件中将需要的程序集加载到编译过程中就可以对嘛?

支持(0) 反对(0) 罗志强 | 园豆:154 (初学一级) | 2014-04-30 11:06

@ShowStyle: RazorBuildProvider Razor视图引擎的东西,我现在还没看完,

他有2个方法 AddVirtualPathDependency  和.AssemblyBuilder.AddAssemblyReference

应该是用来处理这个引用问题的,我前两天刚看到这,后面的还不清楚,你得自己研究下,

MVC的插件式框架,我也在学,不过我是直接在看Orchard源码.

你既然要做这个,推荐你也看下,非常牛逼

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-30 11:13

@吴瑞祥: 好的。非常感谢,我是看Nopcommerce的,不过这个框架很庞大。哎,水平有限。不过你给的思路实在是我的救命稻草,非常感谢

支持(0) 反对(0) 罗志强 | 园豆:154 (初学一级) | 2014-04-30 11:16
0

你那个razor要把它生成cs文件,编译过去,才能读取到。平常的razor文件是没有编译过去的。

wongdavid | 园豆:394 (菜鸟二级) | 2014-04-30 15:47

怎么做?

支持(0) 反对(0) 罗志强 | 园豆:154 (初学一级) | 2014-04-30 15:48

@ShowStyle: 也就是Asp.Net MVC 项目预编译View的方法,你可以参考Razor Generator 

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-30 20:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册