我试图通过添加Percent Complete字段来扩展Steve Woods '待办事项列表' ASP.Net 5 MVC 6项目,并允许编辑每个ToDoListItem的完成百分比。
Let's Build - Steve Woods ToDoList
我的视图显示数据,我可以输入新的完成百分比值;但是,当我单击“保存”时,会将新的空记录写入我的ToDoListItems表。新记录不包含我输入的完成百分比数。
我的查看包含@model
@model IEnumerable<todoy6.Models.ToDoListItems>
我正在使用asp-action返回(发布)到Controller
<form asp-action="Index">
然后,View包含一个如下所示的表格
@foreach (ToDoListItems item in (IEnumerable<ToDoListItems>)ViewData["ToDoListItems"])
{
<tr>
<td>
<input type="hidden" name="[@item.ID].ID" value="@item.ID" />
</td>
<td>
<input type="hidden" name="[@item.ID].ApplicationUserID" value="@item.ApplicationUserID" />
</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
<div class="form-group">
@*<label asp-for=@item.Price class="col-md-2 control-label"></label>*@
<div class="col-md-10">
<input asp-for=@item.Pct class="form-control" />
<span asp-validation-for=@item.Pct class="text-danger" />
</div>
</div>
</td>
</tr>
} @*for each *@
我认为我的问题在于我使用@ Item.ID值迭代ToDoListItems的方式。
我的控制器正在运行此代码:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(ToDoListItems todoitems) //declare and name the todolistitems object returned on POST
{
if (ModelState.IsValid)
{
_context.Update(todoitems);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(todoitems);
}
我的模型有效,但修改后的记录似乎是未识别的(没有ID?)并作为新记录输入到表中。
答案 0 :(得分:3)
我是教程作者..我将在第3部分中介绍这一点,但由于疾病和时间的限制,我无法制作视频(之后的两个!)。
基本上你正在使用的代码是添加越来越多的待办事项列表项,因为你正在调用“Post”方法,该方法(在本教程的当前阶段)只是为了不断增加和添加更多(为了说明目的)。
您需要更改它以在页面上显示项目(不是表单元素!),并且任何新的待办事项列表项都需要呈现为表单控件。
我将很快发布第3部分,感谢您的反馈。