2017-03-20 12 views
0

RazorPage를 상속하여 기본 페이지를 정의하려고합니다.ASP .Net 코어 - RazorPage에서 상속 <TModel> 문제

ArgumentException: Property 'ViewData' is of type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[[MyProject.Models.IndexViewModel, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]', but this method requires a value of type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'. 

매개 변수 이름 : viewContext

나는 내가 내 사용자 정의를 전달할 수 있습니다 을 ViewData을 무시할 수 있습니다 어떻게 페이지 내 @inherit 섹션에서의 tModel 이외 전달하면, 나는 다음과 같은 오류가 발생합니다 다음 줄에 대신 의 모델 IndexViewModel :

@inherits는

,536,913을 MyProject.Base.BaseView 그래서 나는이 작업을 수행 한개

감사

답변

0

는이 문제를 해결하려면이, 일반 유형에 대한 사용 오브젝트 좋은 또는 나쁜 방법이 있지만 RazorPage에서의 tModel을 사용하여 실제로

작업 대신 여부를 아무 생각 없습니다 RazorPage (RazorPage)에 등록하고 자신이 요청한 유형의 모델을 공개하는 속성을 만들어 모델을 해당 유형으로 캐스팅합니다. 이 같은

:

public abstract class MenuViewPage<TModel> : RazorPage<object> 
    { 
     public TModel PageModel { 
      get 
      { 
       return (TModel)ViewData.Model; 
      } 
     } 

    }