【发布时间】:2012-04-25 21:01:09
【问题描述】:
我正在使用带有剃须刀模板的 asp.net C# MVC3,并想了解以下内容:
我有一个表单,这个表单包含一个按钮。如果我单击按钮,将执行以下代码:
function OnGetSelectedFieldValues(result) {
for (var i = 0; i < result.length; i++) {
$("#id").val(result[i]); //This will replace the value of my hidden field with the selected id
$("#DeleteForm").submit();
}
}
根据我的逻辑,这应该提交并删除我从 gridview 中选择的每一行。 它确实选择了每条记录,我用 Javascript“alert()”对此进行了测试。 但它只删除了第一条记录,为什么会发生这种情况,我该如何解决?
问候,
马可
编辑: 这是我的表格(为了便于理解):
@using (Html.BeginForm("Delete", "Home", FormMethod.Post, new { id = "DeleteForm" }))
{
<input type="hidden" id="id" name="id" />
<input type="button" id="button" value="Verwijder geselecteerde" />
}
我的控制器:
[HttpPost]
public ActionResult Delete(int id)
{
ErrorRepository repo = new ErrorRepository();
var test = repo.GetById(id);
repo.Delete(test);
return RedirectToAction("Index");
}
【问题讨论】:
-
您应该一次提交所有值并在您的 C# 代码中处理对它们的迭代。不要做多个
POST请求。 -
一般来说,这看起来是一个不好的方法。您应该尝试对所有删除请求一个请求,以节省流量和延迟。这也可能导致您的网络服务器配置出现问题,即如果您安装了某种防洪安全过滤器(甚至在生产后期)
标签: c# jquery asp.net-mvc for-loop