【问题标题】:Parser Error for Strongly Typed Master Page in MVC 2MVC 2 中强类型母版页的解析器错误
【发布时间】:2011-05-10 15:41:52
【问题描述】:

我正在尝试创建一个强类型母版页 (MVC 2.0) 并收到以下错误:

Parser Error Message: Could not load type 'System.Web.Mvc.ViewMasterPage<Resorts.Services.ViewModels.BaseView>'.

这是我在母版页中的代码:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Resorts.Services.ViewModels.BaseView>" %>
<%@ Import Namespace="Resorts.Services.ViewModels" %>

Resorts.Services.ViewModels.BaseView 位于单独的程序集中,并在母版页中引用。 Resorts.Services.ViewModels.BaseView 不是抽象类。

我看到有人问过类似的问题并在这里解决了,但我不知道解决方案:

Parse Error ViewMasterPage<TModel>

这是 ~Views\Web.Config 文件,我没有以任何方式使用它。不确定我是否需要在其中进行任何更改。如果我删除此文件,我的视图将引发解析错误。

<?xml version="1.0"?>
<configuration>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

如果我在 Master 中执行 &lt;%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %&gt; 一切正常,但它不喜欢 &lt;%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage&lt;T&gt;" %&gt; :(

【问题讨论】:

    标签: asp.net-mvc-2 master-pages


    【解决方案1】:

    Resorts.Services.ViewModels.BaseView 所在的程序集是否也在 MVC 项目本身中被引用?

    您的 Import 语句也在使用之后。试试

    <%@ Import Namespace="Resorts.Services.ViewModels" %>
    <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Resorts.Services.ViewModels.BaseView>" %>
    

    【讨论】:

    • 是的。我所有的 ViewModel 都在该程序集中,我所有的控制器和视图都在使用 ViewModel,没有任何问题。
    • 尝试将@Import 移到@Master 之前。
    • Daniel,我已经试过了,但没什么区别 :(
    【解决方案2】:

    在您的 web.config 中,在确保您的项目实际引用该程序集之后,尝试将该程序集添加到 &lt;assemblies&gt; 部分:

    <compilation debug="true">
        <assemblies>
            ...
            <add assembly="Resorts.Services.ViewModels, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </assemblies>
    </compilation>
    

    以及命名空间部分的命名空间:

    <pages>
        <namespaces>
            ...
            <add namespace="Resorts.Services.ViewModels"/>
        </namespaces>
    </pages>
    

    【讨论】:

    • 达林,我试过你的建议,但没有帮助。我得到同样的错误。出于某种原因,如果我有以下指令 &lt;%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage&lt;T&gt;" %&gt;Html.RenderPartial 无法解析/识别它与 &lt;%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %&gt; 一起正常工作的位置
    【解决方案3】:

    确保 Views 目录中的 web.config 文件可用。错过了我的,并且出现了这个确切的错误。

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2012-09-17
      • 2019-07-07
      相关资源
      最近更新 更多