Ajax调用在MVC中的foreach循环中不起作用

Ajax调用在MVC中的foreach循环中不起作用,ajax,asp.net-mvc,Ajax,Asp.net Mvc,我使用AJAX动态地向数据库添加数据,并在MVC中使用foreach循环显示数据,我还添加了一个按钮,使用AJAX调用删除这些数据 HTML/MVC代码: 并将其传递给该控制器: [HttpGet] [Authorize] public ActionResult RemoveAdditionalRules(int addId) { HouseRules rules = db.HouseRules.Find(addId); db.HouseRules.Remove(rules)

我使用AJAX动态地向数据库添加数据,并在MVC中使用foreach循环显示数据,我还添加了一个按钮,使用AJAX调用删除这些数据

HTML/MVC代码:

并将其传递给该控制器:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     HouseRules rules = db.HouseRules.Find(addId);
     db.HouseRules.Remove(rules);
     db.SaveChanges();

     return Json(JsonRequestBehavior.AllowGet);
}
我在ajax调用错误上遇到500个错误

谁能告诉我哪里做错了?请我被困在这里了

更新:
附加屏幕截图:

提交您的输入类型,希望这对您有所帮助

函数deleterelationid{ 调试器; 如果id>0 $.ajax{ url:/Relations/Delete/+id, 类型:get, 数据类型:json, 数据:{id:id}, 成功:功能反应{ 调试器; 如果响应!=null{ $txtDName.textresponse.name; $DRelationId.valresponse.id; $DeleteRelation.modalshow; } }, 错误:函数响应{ $DeleteRelationLoading.hide; $DeleteRelation\u btn\u cancel.show; $deleteRelationship\u btn\u save.show; } }; 其他的 出了差错; } 按如下方式编写Removeinput函数:

function Removeinput(id) {
        $.ajax({
            url: "/Rooms/RemoveAdditionalRules",
            type: "GET",
            data: { addId : id},
            success: function (response) {
               alert(response);
               $("#divaddrules").load(window.location.href + " #divaddrules");
            },
            error: function (result) {
                alert("Error: " + result.status);
           }
        });
}
然后在控制器方法中:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     AdditionalRules rules = db.AdditionalRules.Find(addId); // Here was the problem. He was pointing to the wrong table that has fixed over team viewer.
     db.AdditionalRules.Remove(rules);
     db.SaveChanges();

     return Json(addId,JsonRequestBehavior.AllowGet);
}

问题是db上缺少值,在您请求id 25但返回null的图像中,您试图删除传递null值的项

因此,在您的情况下,您需要在删除或修复丢失的数据之前进行验证:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     HouseRules rules = db.HouseRules.Find(addId);

If(rules == null)
{
  //return error msg.
  return Json(JsonRequestBehavior.AllowGet);
}
     db.HouseRules.Remove(rules);
     db.SaveChanges();

     return Json(JsonRequestBehavior.AllowGet);
}

return JsonJsonRequestBehavior.AllowGet=>实际上您没有返回任何JSON数据,这可能是导致错误的原因。尝试返回Jsonnew{id=addId},JsonRequestBehavior.AllowGet。您是否能够访问服务器?我认为您已经创建了一个数据传递模型,并且在实际操作中作为parameter@TetsuyaYamamoto我试过了,但还是一样的错误!尝试删除AuthorizeAttribute[授权]。是否仍会发生相同的错误?有时在控制台中,AJAX调用返回解释错误的HTML标记。还可以尝试以下数据:{addId:id}。这不是一个解决方案。这可能是问题所在,请检查您的模型id,然后重试Removeinput@item.idsameyou没有将url发送到id use url:/Relations/Delete/+id,type:get,datatype:json,data:{id:id},@GautamSharma是否已正确调试?addId值是否传递给控制器方法?HouseRules rules=db.HouseRules.FindaddId=>如果返回空结果null,则db.HouseRules.Removerules肯定会抛出参数异常,因为Remove不接受null参数。@GautamSharma我已更新我的答案。选中Removeinput方法和Controller方法。@GautamSharma您可以共享团队查看器Id并通过吗?我正在解决你的问题!您使用的是什么版本?我的uid:1063816751和密码:1457
[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     AdditionalRules rules = db.AdditionalRules.Find(addId); // Here was the problem. He was pointing to the wrong table that has fixed over team viewer.
     db.AdditionalRules.Remove(rules);
     db.SaveChanges();

     return Json(addId,JsonRequestBehavior.AllowGet);
}
[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     HouseRules rules = db.HouseRules.Find(addId);

If(rules == null)
{
  //return error msg.
  return Json(JsonRequestBehavior.AllowGet);
}
     db.HouseRules.Remove(rules);
     db.SaveChanges();

     return Json(JsonRequestBehavior.AllowGet);
}