2011-01-06 45 views
3

我正在使用VirtualPathProvider提供主题视图。作为资源在类库中嵌入Razor视图

在操作方法我想通过路径

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

在Visual Studio Item.cshtml返回一个观点构建行动“嵌入的资源”。
的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文件做过这些,而且不需要编译。他们以开箱即用的资源开箱即用。

+0

对不起,迟到的回应,没有抓住这个问题。您是否设法让编译的视图立即运行?如果您使用编译版本,则不应在路径中使用dll名称。 – 2011-02-07 11:28:43

回答

2

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

0

尝试this solution来处理视图类库中的智能感知。您可能需要将以下行添加到该web.config。

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

此外,尝试添加@Inherits System.Web.Mvc.WebViewPage语句彼此的嵌入式视图(或替代你使用基化酶)在运行时处理这个问题。

1

尝试install-package EmbeddedResourceVirtualPathProvider