aspnet 5 mvc 6 - 如何编辑多条记录?

时间:2016-01-10 22:55:34

标签: asp.net-core-mvc

我试图通过添加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?)并作为新记录输入到表中。

1 个答案:

答案 0 :(得分:3)

我是教程作者..我将在第3部分中介绍这一点,但由于疾病和时间的限制,我无法制作视频(之后的两个!)。

基本上你正在使用的代码是添加越来越多的待办事项列表项,因为你正在调用“Post”方法,该方法(在本教程的当前阶段)只是为了不断增加和添加更多(为了说明目的)。

您需要更改它以在页面上显示项目(不是表单元素!),并且任何新的待办事项列表项都需要呈现为表单控件。

我将很快发布第3部分,感谢您的反馈。