2012-06-12 32 views
4

this question類似我正在使用自定義VirtualPathProvider來檢索嵌入在dll中的視圖。如果我不把@inherits System.Web.Mvc.WebViewPage對我的看法,我得到這個錯誤:使用自定義VirtualPathProvider加載嵌入視圖,繼承自定義WebViewPage

The view at '~/Views/Home/Index.cshtml' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>. 

我使用的是從WebViewPage繼承的自定義BaseViewPage。在我開始使用此自定義VirtualPathProvider之前,在web.config中設置新的基本頁面。現在,如果我嘗試在@inherits My.BaseViewPage的頁面上繼承我的自定義類,則會得到與上面相同的錯誤。

爲完整起見,我將添加該頁面並開始編譯,如果我從WebViewPage繼承,但因爲代碼期待以從BaseViewPage有屬性,它拋出一個錯誤。

回答

2

事實證明,問題與我使用的視圖引擎有關。爲了讓VirtualPathProvider正常工作,我用自定義的視圖引擎替換了我需要的視圖位置。我意外地從WebFormsViewEngine繼承而不是RazorViewEngine,這就是爲什麼我一直得到的錯誤是爲ViewPage而不是WebViewPage。現在,這一切都已經整理出來,我的自定義基本視圖頁面工作得很好。

+0

啊 - 很高興我找到了這個答案! :) – Karan

1

嗯...是否有可能基類它不能正確解析你的DLL?

如果是這種情況,你需要做的是在......(從內存中去)上添加一個自定義程序集/類型解析器處理程序AppDomain.AssemblyResolve - 在該處理程序中,您需要獲取適當的類型從你的DLL,並返回。

不幸的是 - 在我的手機上,所以研究能力是有限的。

+0

感謝您的回答。我幾乎走了這條路線,但[解決方案](http://stackoverflow.com/a/11057293/216553)原來是一個簡單的PEBKAC實例。 – ashanan

相關問題