C# StaticPagedList和POST表单:未为此对象定义无参数构造函数

C# StaticPagedList和POST表单:未为此对象定义无参数构造函数,c#,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,我有一个基于PagedList.StaticPagedList的典型表 我的视图模型如下所示: public class UpcomingOverviewViewModels { public int? Page { get; set; } public StaticPagedList<OverdueUpcomingInvoiceViewModel> OverduesPaged { get; set; } public string[] SelectedInv

我有一个基于
PagedList.StaticPagedList
的典型表

我的视图模型如下所示:

public class UpcomingOverviewViewModels
{
    public int? Page { get; set; }
    public StaticPagedList<OverdueUpcomingInvoiceViewModel> OverduesPaged { get; set; }
    public string[] SelectedInvoicesIds { get; set; }

    public UpcomingOverviewVideModels()
    {

    }
}
我不明白的是:我的viewmodel确实有一个无参数构造函数。是的,StaticPagedList没有,但是为什么要调用它呢

这是个错误的问题。调用构造函数的原因无关紧要

视图模型中的每个属性必须属于具有无参数构造函数的类型。这就是MVC的工作方式。争论这件事真的没有意义

如果忽略该规则,则会收到错误消息

只需使用
列表
数组
,或创建一个新类型,继承您想要的类型,该类型具有无参数构造函数:

public class MyList : StaticPagedList<OverdueUpcomingInvoiceViewModel>
{
     public MyList() : base(new OverdueUpcomingInvoiceViewModel[] { }, 1, 1, 0)
     {
     }
}
公共类MyList:StaticPagedList
{
public MyList():base(新的OverdueUpcomingInvoiceViewModel[]{},1,1,0)
{
}
}

我会使用
List

模型绑定器必须创建
StaticPagedList
,以便在发布期间用数据填充它。所有正在创建的模型都需要一个无参数constructor@Nkosi知道了。我不在乎帖子中的页面列表——在这里“忽略它”的最佳方式是什么?看起来你把它作为get上的模型。对不包含该属性类型的帖子使用另一个模型。
public class MyList : StaticPagedList<OverdueUpcomingInvoiceViewModel>
{
     public MyList() : base(new OverdueUpcomingInvoiceViewModel[] { }, 1, 1, 0)
     {
     }
}