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...
}