【问题标题】:aspnet 5 mvc 6 - how to edit multiple records?aspnet 5 mvc 6 - 如何编辑多条记录?
【发布时间】:2016-01-11 07:12:19
【问题描述】:

我正在尝试扩展 Steve Woods 'To Do List' ASP.Net 5 MVC 6 项目,方法是添加 Percent Complete 字段,并允许编辑每个 ToDoListItem 的 Percent Complete。 p>

Let's Build - Steve Woods ToDoList

我的视图显示数据,我可以输入新的完成百分比值;但是,当我单击保存时,一条新的空记录将写入我的 ToDoListItems 表。新记录也不包含我输入的完成百分比数字。

我的视图包含@model

@model IEnumerable<todoy6.Models.ToDoListItems>

我正在使用 asp-action 来返回(发布)到控制器

<form asp-action="Index">

然后视图包含一个像这样布局的表格

        @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?)并作为新记录输入到表中。

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的原始教程。它让我走了很长一段路,非常感谢!是否可以让 Percent Complete 成为表单控件?我希望用户能够在不离开页面的情况下查看他们的列表并修改完成百分比。我正在从 Index.cshtml 发布回 ToDoListsController 中的 Index,而不使用 Edit 视图。
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多