我正在使用此模式將模型綁定到列表,但是當(dāng)我發(fā)布表單時,IList 始終為空。我以前成功地使用過這種模式。這次和我過去做的有點不同,因為字段是在一個子循環(huán)中生成的。不確定這是否是它不起作用的原因。我已經(jīng)做了很多反復(fù)試驗,所以我希望有人能看到我做錯了什么:索引視圖@model Collect.ViewModels.JobWorker@{ ViewBag.Title = $"{Model.Job.Name} - Workers"; Layout = "~/Views/Shared/_Layout.cshtml";}<h2>@ViewBag.Title</h2>@using (Html.BeginForm("Update", "Workers")){ @Html.AntiForgeryToken() @Html.HiddenFor(model => Model.JobId) int z = 0; for (int x = 0; x < Model.WorkPeriods.Count; x++) { <h3>@Model.WorkPeriods[x].StartDate.toIsoDateString() through @Model.WorkPeriods[x].EndDate.toIsoDateString()</h3> <div style="display: flex; flex-wrap: wrap;"> @for (int y = 1; y <= Model.Job.MaximumNumber; y++) { <div class="panel panel-primary panel-info-1" > <div class="panel-heading"> <span class="fa fa-clock-o"></span> Opening @Model.Workers[z].OpeningNumber </div> <div class="panel-body"> @Html.DropDownListFor(model => Model.Workers[z].PersonId, new SelectList(Model.People, "PersonId", "Name"), htmlAttributes: new { @class = "form-control" }) </div> </div> @Html.HiddenFor(model => Model.Workers[z].Id); @Html.HiddenFor(model => Model.Workers[z].JobId); @Html.HiddenFor(model => Model.Workers[z].WorkerId); @Html.HiddenFor(model => Model.Workers[z].OpeningNumber); @Html.HiddenFor(model => Model.Workers[z].StartDate); @Html.HiddenFor(model => Model.Workers[z].EndDate); z++; } <div class="panel-info-1" > <button type="submit" value="Update" class="btn btn-default">Update</button> </div> </div> }}<div> @Html.ActionLink("Back to Jobs", "Index", "Jobs")</div>
1 回答

繁花不似錦
TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊
基于視圖中使用的模型,
@model Collect.ViewModels.JobWorker
該Update操作期待錯誤的模型,這就是模型綁定器沒有轉(zhuǎn)換它的原因。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Update(byte JobId, JobWorker model) {
If(ModelState.IsValid) {
IList<Dto.Worker> newWorkers = model.Workers;
// logic to update is here
return RedirectToAction("Index", "Jobs");
}
return View(model);
}
- 1 回答
- 0 關(guān)注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消