ASP .Net Core - 继承RazorPage <tmodel>问题

时间:2017-03-20 23:04:10

标签: asp.net-core custom-view

我试图通过继承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

由于

1 个答案:

答案 0 :(得分:1)

所以我这样做是为了解决这个问题,不知道这是好的还是坏的方法但是有效吗

而不是在RazorPage中实际使用TModel,在RazorPage(RazorPage)中使用对象作为泛型类型,并创建一个属性来公开您所请求类型的模型,并将Model转换为该类型。

像这样:

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

    }