我想嵌入视图在一个外部的DLL随着他们的CSS和JS。我主要在那里。我从我的主项目中做了一个Html.RenderPartial,并且似乎找到了嵌入式视图,并且css和js没有问题(使用VirtualPathProvider)。MVC嵌入式视图
然而,嵌入式视图然后调用一个动作(在外部DLL),它返回一个PartialView(也嵌入)。该视图被发现(并且我已经在顶部放置了@inherits System.Web.Mvc.WebViewPage语句以避免关于'在上下文中找不到模型'的错误)。
但是最后一个障碍似乎是关于“... WebViewPage不包含'DisplayFor'.....”的定义,因为我使用@ Html.DisplayFor(.....
任何人都可以告诉我,我需要做什么才能解决这个问题的最后一点?我已经从Views文件夹中将web.config复制到我的dll所在的bin文件夹中(好像是由其他文章实现的)但是这并没有帮助。
非常感谢
PS当视图的生成操作设置复制到输出目录和我使用的视图引擎来指向bin/views目录它一切正常。这是唯一的,现在我已经改变了嵌入式的ressource
该库已在项目中引用。事实上,外部DLL是一个完整的Mvc网站项目 - 可能不必要,但它是确保所有剃须刀语法都具有智能感知等的快速方法。所以它在那里,但显然我错过了将嵌入资源字符串转换为一个编译的视图。我是否需要设置自定义工具属性?我是否需要安装剃须刀发电机加载项?该条目已经存在于我的项目文件 – user2047485
不,您不会错过“诀窍”。它就在那里,您的VirtualPathProvider负责确保当Razor选择编译视图时视图可用。你需要确保它编译。有一个很难的方法:在ASP.NET Temporary文件夹中调查视图的输出。或者,为了使事情变得更简单,请在您的网络中添加 (或类似)。配置,然后挖掘它。不是很令人兴奋,但有帮助。 –
它不会抱怨@ Html.Raw只有Html.DisplayFor。我拿出了DisplayFors但是离开了Raw并且工作正常。我的VirtualPathProvider应该不仅仅是用GetManifestResourceStream(resourceName)返回新的EmbeddedVirtualFile(virtualpath,stream)吗?我需要在那里做点什么吗? – user2047485