我试图通过继承RazorPage来定义基页。如果我在页面的@inherit部分传递除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 :(得分:1)
所以我这样做是为了解决这个问题,不知道这是好的还是坏的方法但是有效吗
而不是在RazorPage中实际使用TModel,在RazorPage(RazorPage)中使用对象作为泛型类型,并创建一个属性来公开您所请求类型的模型,并将Model转换为该类型。
像这样: public abstract class MenuViewPage<TModel> : RazorPage<object>
{
public TModel PageModel {
get
{
return (TModel)ViewData.Model;
}
}
}