设置值从集合提交提交mvc

我想进入控制器和模型以及来自集合的特定值,其中我按下按钮

 <% for(int i=0; i   <input type="submit" title="ads" value = name=ssad /> 
ProductId Productname Quantity UnitPrice
m.NorthOrderDetails[i].Quantity) %> m.NorthOrderDetails[i].UnitPrice) %>

例如,我可以在集合中设置提交值吗?

  <input type="submit" title="ads" value = name=ssad /> 

并且该值将等于17,例如在控制器中。 这项工作,但我如何将按钮中的文本从集合中的值更改为任何文本?

更新我使用Stephen Muecke的代码,但我编辑表因为我使用aspx页面

  <button type="button" class="delete" data-id="">Delete <input type="hidden" name="" value="" /> 

并且,遗憾的是脚本不会调用控制器

您可以使用ajax将项目ID值发布到删除数据库中项目的控制器方法,然后从DOM中删除该项目,而不是在每次要删除项目时执行完整发布和重新生成视图。 这将大大提高性能,并且意味着您可以避免使用Session

将视图更改为(抱歉,但这是Razor语法)

  @for (int i = 0; i < Model.NorthOrderDetails.Count; i++) {  @Html.LabelFor(Model.NorthOrderDetails[i].ProductID) // ToString not required @Html.Label(Model.NorthOrderDetails[i].ProductName) @Html.TextBoxFor(m => m.NorthOrderDetails[i].Quantity)> @Html.TextBoxFor(m => m.NorthOrderDetails[i].UnitPrice) @Html.ActionLink("Go to second view", "ViewTwo", "Order", Model, null) // This wont work   // change this  // add this  }   // add this 

笔记:

  1. 您的操作链接不起作用(您无法将集合传递给GET方法)我怀疑您的意思是@Html.ActionLink("Go to second view", "ViewTwo", "Order", new { ID = Model.NorthOrderDetails[i].ProductID }, null)因此您可以将productID传递给ViewTwo()方法
  2. 将每行中的提交按钮更改为普通按钮,并在末尾添加一个提交按钮(以在一个post中保存对文本框的所有更改)
  3. Index属性添加特殊隐藏输入。 DefaultModelBinder使用它来匹配索引器不连续的集合(如果删除集合中间的项目,它们将是它们)
  4. 您不会为ProductID呈现任何输入,这意味着您无法在回发后识别产品。 您需要为其添加隐藏输入

然后添加以下脚本

 var url = '@Url.Action("Delete", "YourControllerName")'; $('.delete').click(function() { var id = $(this).data('id'); // Get the product ID var row = $(this).closest('tr') // Get the table row $.post(url, { ID: id }, function(data) { if(data) { row.remove(); // remove the row from the table } else { // oops! } }); }); 

和控制器

 public ActionResult View(IEnumerable model) { // Save your collection and redirect } [HttpPost] public JsonResult Delete(int ID) { // Delete the product in the database based on the ID return Json(true); } 

注意:如果删除某个项目可以以某种方式抛出和失败exception,那么你应该return Json(null); 所以可以在ajax方法中检查它。