2013-06-10 8 views
5

PartialViewをViewsフォルダの代わりに他のフォルダ内で呼び出すと、WebViewPageから派生する必要があります。PartialViewはWebViewPageエラーから派生する必要があります

エラー

System.InvalidOperationException: The view at '~/Modules/HtmlContent/_HtmlContent.cshtml' must derive from WebViewPage, or WebViewPage<TModel>. 
PartialView adding 

Page.cshtml

<div class="side"> 
    @Html.Action("Side") 
</div> 

HomeController.cs

public ActionResult Side() 
{ 
    return PartialView("~/Modules/HtmlContent/_HtmlContent.cshtml"); 
} 

ファイル階層

Modules 
| 
+-- HtmlContent 
|    | 
|    +-- _HtmlContent.cshtml 
| 
Views 
    | 
    +-- Home 
    |  | 
    |  +-- Index.cshtml 
    |  | 
    |  +-- Page.cshtml 
    | 
    +-- Shared 
      | 
      +-- Layout.cshtml 
      | 
      +-- _Partial.cshtml 

答えて

13

あなたはこのカスタムフォルダのルートにweb.configファイルを配置する必要があります。 ~/Views/web.configと同じです。 pageBaseTypeSystem.Web.Mvc.WebViewPageに設定されているか

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization"/> 
     <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

注意:このweb.configファイル内には、カミソリページのタイプを示すセクションがあります。

はまた、あなたのカミソリビューの先頭に次を追加することができます。

@inherits System.Web.Mvc.WebViewPage 
+0

私の問題は、あなたの応答のためにあなたは非常に多くのsolved.Thank。 – user2282567

+0

こんにちは@ダーリンディミトロフ、私はあなたに解決策を提案しました。実際に私はエリアを作成しました。エリアビューフォルダにweb.configファイルを追加しましたが、まだ運がありません。別の解決策が働いていますが、各ビューに追加するのは難しいことがわかります。 – mmushtaq

関連する問題