2010-07-12 2 views
3

MVC에서 강력한 형식의 뷰를 직접 만들려면 asp.net 응용 프로그램의 새 기본 클래스를 만드는 중입니다. 하지만 앱 자체는 MVC 앱이 아닙니다. 아래는 내 사용자 정의 클래스의 기초입니다. 나는 내 응용 프로그램에 새 WebForm에 페이지를 추가 할 때형식을로드 할 수 없습니다 - 사용자 정의 ViewPage와 같은 기본 클래스

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

, 나는이 "상속"변경 Page 지시문의 속성은 ASP와 같은 방식으로 대신 전형적인 코드 숨김 클래스의베이스 페이지 클래스를 가리 키도록. 닷넷 MVC는 견해를 강력하게 입력합니다. 다음은 페이지 지시문의 예입니다. 위의 지침에

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

는 MyApp.Content.Search 클래스는베이스 페이지는 제네릭 형식 제약 조건을 만족해야하는 IPageInfo 인터페이스를 구현합니다.

모든 것이 잘 컴파일되지만 페이지를 탐색 할 때 오류 Could Not Load Type이 표시됩니다. MVC 2 어셈블리를 열어서 ViewPage가 어떻게 수행되었고 동일한 기본 구조로 보이는지 살펴 보았습니다. 웹 주위를 둘러 보았고 MVC에서이 오류에 대한 일반적인 권장 사항은 MVC에 대한 참조를 제거하고 readd하는 것이 었습니다. 내가 MVC를 사용한다면 위대 할 것이다. 그러나 내 BasePage 클래스와 내 Search 클래스는 모두 동일한 어셈블리에 있습니다. 필자는 정규화 된 이름 (그림과 같이)도 사용하고 있습니다.

누구나 내가이 문제를 해결하기 위해 시도 할 수있는 것에 대해 알 수 있습니까?

감사

답변

4

MyApp.Core.BasePage에 <%@ Page language="C#" inherits="MyApp.Core.BasePage<MyApp.Content.Search>"%> 매핑 마법은 ASP.NET MVC와 함께 도입되었다. 당신은 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> 
+0

PageParserFilter 오른쪽 방향으로 이동 저를 얻었다. 정보 주셔서 감사합니다. – JamesEggers

관련 문제