我正在尝试将视图以及CSS和JS嵌入到外部dll中。我主要在那儿。我从我的主项目中执行了Html.RenderPartial,似乎发现嵌入视图以及CSS和js都没问题(使用VirtualPathProvider)。
但是,该嵌入式视图随后调用一个操作(在外部dll中),该操作返回PartialView(也已嵌入式)。找到该视图(并且在顶部放置了@inherits System.Web.Mvc.WebViewPage语句,以避免有关“在上下文中找不到模型”的错误)。
但是,最后一个障碍似乎是关于“ ... WebViewPage不包含'DisplayFor'...的定义。”的错误,因为我正在使用@ Html.DisplayFor(.....
谁能告诉我该难题的最后一部分需要做什么?我已经将Web.config从Views文件夹复制到了我的dll所在的bin文件夹中(似乎由其他帖子暗示),但这没有帮助。
非常感谢
PS当将视图的构建操作设置为“复制到输出目录”并且我使用ViewEngine指向bin / views目录时,一切正常。只是到现在我才更改为嵌入式资源
@ Html.DisplayFor(...)是具有以下签名的扩展方法:
public static MvcHtmlString DisplayFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
string templateName
)
它位于需要引用的System.Web.Mvc.Html(System.Web.Mvc.dll)中,以便视图可以正确编译。如何引用它是另一个问题,但是您可以通过默认VPP在其他视图中显示它,也可以执行以下操作:
如果要确保它可用以尝试诊断为什么在运行时不加载它,则可能希望预编译视图。只需将以下内容添加到您的项目文件中:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
这将揭示您在视图中可能存在的任何错误,这些错误是在构建而不是运行时进行编译的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句