代码之家  ›  专栏  ›  技术社区  ›  JamesEggers

无法像基类一样加载类型-自定义ViewPage

  •  3
  • JamesEggers  · 技术社区  · 14 年前

    我正在为asp.net应用程序创建一个新的基类,以便从MVC创建我自己的强类型视图版本。不过,该应用程序本身并不是MVC应用程序。下面是我的自定义类的基础。

    public class BasePage<T> : Page where T : IPageInfo
    {
        public BasePage()
        {
            this.MyPageInfo = IoC.GetInstance<IPageInfo>(); //pseudo-code to populate a property.
        }
    }
    

    <%@ Page language="C#" inherits="MyApp.Core.BasePage<MyApp.Content.Search>"%>
    

    在上面的指令中,MyApp.Content.Search类实现了基页需要满足泛型类型约束的IPageInfo接口。

    一切都很好,但当我浏览到该页时,我得到了错误 Could Not Load Type . 我打开mvc2程序集来查看ViewPage是如何完成的,它看起来是相同的基本结构。我环顾了一下web,针对MVC的这个错误的一般建议是删除并重新读取对MVC的引用。如果我使用MVC,那就太好了;但是,我的基本页类和搜索类都在同一个程序集中。我也一直在使用完全限定名(如图所示)。

    有没有人知道我该怎么做才能让这一切顺利进行?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Atanas Korchev    14 年前

    地图的魔力 <%@ Page language="C#" inherits="MyApp.Core.BasePage<MyApp.Content.Search>"%> 您可以检查System.Web.Mvc.ViewTypeParserFilter的实现:

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