Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC更新列表项_Asp.net Mvc - Fatal编程技术网

Asp.net mvc MVC更新列表项

Asp.net mvc MVC更新列表项,asp.net-mvc,Asp.net Mvc,您好,我有一个显示发票和发票行的视图 有没有人在同一页上实现了类似的目标,或者知道如何做到这一点 不,我不想使用jqgrid。我还有其他jqgrid不适合的功能。我会使用带或不带AJAX的每行表单方法。注意:如果使用非基于表的布局,这将更容易。至少,您的submit按钮需要与您要发回的输入共享同一个表元素。此外,您可能只需要行id和个人id,而不是整个模型。使用行id从数据库中获取实体,然后更新人员id并保存它。移除周围的表单,并在每个表元素中放置一个表单,下拉列表也会移动submit按钮。修改

您好,我有一个显示发票和发票行的视图

有没有人在同一页上实现了类似的目标,或者知道如何做到这一点


不,我不想使用jqgrid。我还有其他jqgrid不适合的功能。

我会使用带或不带AJAX的每行表单方法。注意:如果使用非基于表的布局,这将更容易。至少,您的submit按钮需要与您要发回的输入共享同一个表元素。此外,您可能只需要行id和个人id,而不是整个模型。使用行id从数据库中获取实体,然后更新人员id并保存它。移除周围的表单,并在每个表元素中放置一个表单,下拉列表也会移动submit按钮。修改操作的签名以匹配

  @foreach (var item in Model.InvoiceLines) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Activity.Descriptor)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Amount)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.PaymentType.Name)
            </td>
            <td>
                @using (Html.BeginForm("EditInvoiceLine", new { id => modelItem.InvoiceId } ))
                {
                   <span>Person:</span>
                   @Html.DropDownListFor(modelItem => item.PersonrId, Model.People as IDictionary<string, IEnumerable<SelectListItem>>, "--- Select ---")

                   <input type="submit" value="Update" />
                }
            </td>
        </tr>
   }

   [HttpPost]
   public ActionResult EditInvoiceLine( int id, int personId )
   {
        var line = db.InvoiceLines.SingleOrDefault( id );
        line.PersonId = personId;
        db.SaveChanges();
        return View( line ); // more more likely a model based on the line...
   }

InvoiceLine为空,因为控制器不知道它来自何处。还有,“id”来自哪里?难道不是“人格化”吗?在我看来,最简单的技术就是在按钮单击时使用ajax,然后使用GET-through QueryString发送值。

InvoiceLine是空的,因为控制器不知道它来自哪里。还有,“id”来自哪里?难道不是“人格化”吗?在我看来,最简单的技术就是在点击按钮时使用ajax,然后使用GET-through QueryString发送值。我认为这是一个很好的建议。无法将评论标记为答案我将添加此作为答案,以便您可以接受它
[HttpPost]
        public ActionResult EditInvoiceLine(InvoiceLine invoiceLine, int id)
        {

            return View(invoiceLine);
        }
  @foreach (var item in Model.InvoiceLines) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Activity.Descriptor)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Amount)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.PaymentType.Name)
            </td>
            <td>
                @using (Html.BeginForm("EditInvoiceLine", new { id => modelItem.InvoiceId } ))
                {
                   <span>Person:</span>
                   @Html.DropDownListFor(modelItem => item.PersonrId, Model.People as IDictionary<string, IEnumerable<SelectListItem>>, "--- Select ---")

                   <input type="submit" value="Update" />
                }
            </td>
        </tr>
   }

   [HttpPost]
   public ActionResult EditInvoiceLine( int id, int personId )
   {
        var line = db.InvoiceLines.SingleOrDefault( id );
        line.PersonId = personId;
        db.SaveChanges();
        return View( line ); // more more likely a model based on the line...
   }