5

在其他文件夹而不是 Views 文件夹中调用 PartialView 时,出现“必须从 WebViewPage 派生”错误。

错误

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

页面.cshtml

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

家庭控制器.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
4

1 回答 1

14

您需要将 web.config 放在此自定义文件夹的根目录中。与 相同~/Views/web.config。在此 web.config 中,您将找到指示 Razor 页面类型的部分:

<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>

注意如何pageBaseType设置为System.Web.Mvc.WebViewPage

或者,您可以将以下内容添加到 Razor 视图的顶部:

@inherits System.Web.Mvc.WebViewPage
于 2013-06-10T06:26:39.630 回答