2017-03-20 12 views
0

私はRazorPageから継承してベースページを定義しようとしています。私はページの私の@inheritセクションでTModelの以外のものを渡すと、私は次のエラーを取得する: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を上書きすることができますので、私は私のカスタムを渡すことができます次の行で代わりのモデルIndexViewModel

@inheritsは

をMyProject.Base.BaseViewの

おかげ

答えて

0

は、だから私は、ジェネリック型のオブジェクトを使用して、それが良いか悪いアプローチであるが、かどうかは考えが

を作業していない代わりに、実際にRazorPageでTModelのを使用している、この問題を回避するために、これを行っていますRazorPage(RazorPage)で作成し、独自のタイプのモデルを公開するプロパティを作成し、そのタイプにModelをキャストします。このような

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

    }