gpt4 book ai didi

c# - StaticPagedList 连同 POST 表单 : No parameterless constructor defined for this object

转载 作者:行者123 更新时间:2023-11-30 23:04:13 24 4
gpt4 key购买 nike

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

我的 View 模型如下:

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

public UpcomingOverviewVideModels()
{

}
}

我的观点如下。整个想法是我有一个包含表格的表单,当我POST 时,我选择了一些我可以发送的记录。

挑战在于,当我 POST 到我的端点 StartDebtCollectionCases 时,我收到以下错误:

[MissingMethodException: No parameterless constructor defined for this object. Object type 'PagedList.StaticPagedList`1[[Likvido.Models.Upcoming.OverdueUpcomingInvoiceViewModel, Likvido, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.]

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

我的观点:

    @using (Html.BeginForm("StartDebtCollectionCases", "Upcoming", FormMethod.Post))
{
<table class="table table-responsive-lg table-bordered table-striped table-sm mb-0">
<thead>
<tr>
<th>Start inkassosag</th>
<th>
Faktura#
</th>
<th>
Debitor
</th>

</tr>
</thead>
<tbody>

@for (int i = 0; i < Model.OverduesPaged.Count; i++)
{


<tr>

<td>

@Html.HiddenFor(m => m.OverduesPaged[i].InvoiceId)
@Html.HiddenFor(m => m.OverduesPaged[i].Debtor)
<label>
@Html.CheckBoxFor(m => m.OverduesPaged[i].IsSelected)
Start case
</label>
}

</td>
<td>@Model.OverduesPaged[i].InvoiceId</td>
<td>@Model.OverduesPaged[i].Debtor.ToString()</td>

</tr>

}
</tbody>
</table>
<br />
<input class="btn btn-primary" value="Start inkassosager" type="submit" />
}
<br /><br />
Side @(Model.OverduesPaged.PageCount < Model.OverduesPaged.PageNumber ? 0 : Model.OverduesPaged.PageNumber) af @Model.OverduesPaged.PageCount. Totalt antal resultater:
@Model.OverduesPaged.TotalItemCount stk

@Html.PagedListPager(Model.OverduesPaged, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))

</div>

最佳答案

What I don't understand: is that my viewmodel DO have a parameterless constructor. Yes, the StaticPagedList do not, but why is that being called at all?

这是个错误的问题。为什么调用构造函数并不重要。

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

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

只需使用 List<T> , Array<T> ,或者创建一个继承你想要的类型的新类型,确实有一个无参数的构造函数:

public class MyList : StaticPagedList<OverdueUpcomingInvoiceViewModel>
{
public MyList() : base(new OverdueUpcomingInvoiceViewModel[] { }, 1, 1, 0)
{
}
}

我会用List<OverdueUpcomingInvoiceViewModel>

关于c# - StaticPagedList 连同 POST 表单 : No parameterless constructor defined for this object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com