2011-01-06 48 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