MVC 2中强类型母版页的分析器错误

时间:2011-05-10 15:41:52

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

我正在尝试创建一个强大的主页(MVC 2.0)并收到以下错误:

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

这是我在Master Page内的代码:

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

Resorts.Services.ViewModels.BaseView位于单独的程序集中,并在Master Page中引用。 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中<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>一切正常但它不喜欢<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<T>" %> :(

3 个答案:

答案 0 :(得分:0)

汇编所在的Resorts.Services.ViewModels.BaseView是否也在MVC项目本身中引用?

使用后,您的Import语句也会出现。尝试

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

答案 1 :(得分:0)

在确保项目实际引用程序集之后,在web.config中尝试将程序集添加到<assemblies>部分:

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

答案 2 :(得分:0)

确保Views目录中的web.config文件是可以随意使用的。失踪了我的确有错误。