2011-11-14 20 views
71

我正在關注Justin Slattery's Plugin Architecture tutorial並試圖使其適用於Razor,而不是WebForm Views。該視圖必須來自WebViewPage或WebViewPage <TModel>

一切(控制器,插件程序集加載等)似乎沒問題。但是,我無法使嵌入的Razor視圖正常工作。當我嘗試瀏覽到的「HelloWorld /索引」,我得到以下錯誤:

The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>. 

異常是由System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

扔我可以包括完整的堆棧跟蹤,如果需要的話。

任何人都可以建議我可能做錯了什麼?

回答

155

您可以結算更適合剃刀的following blog post

但回答你的問題,既然你現在正在從一個非標準的位置提供你的意見,那麼不再有~/Views/web.config文件適用,並允許你指定你的剃鬚刀視圖的基本類型。所以,你可能需要添加每個Razor視圖的頂部以下內容:

@inherits System.Web.Mvc.WebViewPage 
@model ... 
+1

謝謝你的兩條信息。我會檢查你提到的博客。 – Nasir

+12

我能夠將〜/ Views中的web.config複製到我的備用位置來解決我的問題。謝謝。 – joelnet

+1

@Darin Dimitrov我有類似的問題。當我嘗試添加'@ inherits'時,出現錯誤,說我不能同時使用'@ inherits'和'@ model'。你能幫忙嗎?編輯。我正在使用mvc4 – gumenimeda

6

注:我有一個非常類似的問題,不得不終於追查,我是用MVC 4.0.0.0在連接的唯一開發商其解決方案。

其他人都正確地引用了3.0.0.0並且正在構建/運行時沒有錯誤。

TL; DR請確保您的引用與開發組的其餘部分相同。

1

我有一個相同的問題,因爲我沒有提交包含剃鬚刀庫的軟件包文件夾。然後我添加了包,它工作,但重建後,它打破了。然後關閉nuget自動運行,現在它工作正常。 在我的情況下,nuget搞砸了。

0

今天剛把這個錯誤更新爲舊的MVC3項目到版本4,對我而言,解決方案是刪除<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">部分中的屬性appliesTo="v2.0.50727"

-1

安裝包:安裝,包裝Microsoft.AspNet.WebPages

+1

我不相信'Microsoft.AspNet.WebPages'包在4年前可用於ASP.NET MV3。 – Nasir

+2

@Nasir,我問的是真的,在StackOverflow上最好是這個答案與發佈時可用的技術有關,即使問題今天仍然存在? –

+1

我個人的觀點是,如果你回答的是老問題,至少要承認,當問題最初被問到時,提供的答案可能並不相關。否則,它會以無知的答案或用戶不注意細節(日期即爲其中一個細節)的形式出現。 – Nasir

0

,我想分享我的痛苦..網站工作正常當地,但是當我發佈到客戶的IIS,它是引發此錯誤。所有web.config文件(root和/ Views)都與網站的工作副本完全匹配。

其中一個視圖(logon.cshtml)具有不一致的行結尾,我沒有單擊yes來修復它在我的Windows機器上。

對不一致的行結束對話框單擊是併發布logon.cshtml視圖爲我修復它。

0

當我嘗試將MVC腳手架(特別是Views文件夾)添加到Web API項目時,出現此錯誤。Darin Dimitrov's answer說:

there is no longer the ~/Views/web.config file that applies and allows you to specify the base type for your razor views

並在這個問題的答案評論,joelnet said

I was able to copy the web.config from ~/Views to my alternate location to solve my issue with this.

Paul d'Aoust said

If you're having trouble getting the solution in @joelnet's comment to work, try cleaning and rebuilding the project.

這些提示幫助我找出解決方案。

首先我將同一解決方案中另一個項目的Views文件夾中的Web.config複製到我的新Views文件夾中。我將主標記namespace重命名爲與新項目相匹配,並在得到錯誤後刪除了另一個我不需要的<add namespace="..." />。然後我觸發了一個構建(只有一個正常的構建,我不需要清理和重建),並且能夠無誤地加載我的新視圖。

相關問題