将类库中的Razor视图作为资源嵌入

时间:2011-01-06 15:25:56

标签: asp.net-mvc razor

我正在使用VirtualPathProvider提供主题视图。

在操作方法中,我想通过路径返回视图

return View("~/Themes/SomeTheme.dll/Views/Content/Item.cshtml");

在Visual Studio中,Item.cshtml有一个构建操作“Embedded Resource” VirtualPathProvider找到.cshtml文件,但是我收到错误

The view at '~/Themes/SomeTheme.dll/Views/Content/Item.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.

我想我必须编译该视图,然后我跟着these instructions

现在VirtualPathProvider无法找到Item.cshtml,因为它不再是嵌入式资源。

我该如何解决这个问题?我无法添加对SomeTheme.dll的引用,因为在应用程序启动时动态加载了激活的主题。

我之前用aspx文件完成了这个,而且不需要编译。他们开箱即用作为嵌入式资源。

3 个答案:

答案 0 :(得分:2)

我遇到了嵌入式aspx视图的类似问题。查看页面时发生的编译依赖于views文件夹的web.config中的某些设置。嵌入式资源不在views文件夹中,因此请勿使用这些设置并且无法编译。

答案 1 :(得分:1)

尝试install-package EmbeddedResourceVirtualPathProvider

答案 2 :(得分:0)

尝试this solution在View类库中处理intellisense。您可能需要将以下行添加到该web.config。

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />        

此外,尝试将@Inherits System.Web.Mvc.WebViewPage语句添加到每个嵌入视图(或替换您使用的基本句子)以在运行时处理此问题。