C# 使用AJAX-ASP.NETMVC5删除数据库表中包含图像和多外键的行

C# 使用AJAX-ASP.NETMVC5删除数据库表中包含图像和多外键的行,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试使用Ajax删除表中的行(Cars),以便在尝试删除表中的行时页面不会刷新。这是我的代码,但目前按Delete键没有任何作用: 表(车辆): 身份证件 形象 BodyId(FK) 齿轮箱ID(FK) 办公室ID(FK) 控制器: [HttpPost] public async Task<ActionResult> Delete(string id) { Cars cars = await db.Cars.FindAsync(id);

我正在尝试使用Ajax删除表中的行(Cars),以便在尝试删除表中的行时页面不会刷新。这是我的代码,但目前按Delete键没有任何作用:

表(车辆): 身份证件 形象 BodyId(FK) 齿轮箱ID(FK) 办公室ID(FK)

控制器:

    [HttpPost]
    public async Task<ActionResult> Delete(string id)
    {
        Cars cars = await db.Cars.FindAsync(id);
        db.Cars.Remove(cars);
        await db.SaveChangesAsync();
        return Json("");
    }

    [HttpPost]
    public async Task<ActionResult> DeleteCarImage(string id, string 
     imageId)
    {
        Cars cars = await db.Cars.FindAsync(id);
        cars.Images = cars.Images?.Replace(imageId + "*", "");
        db.Entry(cars).State = EntityState.Modified;
        await db.SaveChangesAsync();
        System.IO.File.Delete(Path.Combine(Server.MapPath("/images/cars"), 
         imageId));
        return Json("");
    }
[HttpPost]
公共异步任务删除(字符串id)
{
Cars Cars=wait db.Cars.FindAsync(id);
db.车辆。移除(车辆);
等待db.saveChangesSync();
返回Json(“”);
}
[HttpPost]
公共异步任务DeleteCarImage(字符串id,字符串
图像ID)
{
Cars Cars=wait db.Cars.FindAsync(id);
cars.Images=cars.Images?.Replace(imageId+“*”,”);
db.Entry(cars.State=EntityState.Modified;
等待db.saveChangesSync();
System.IO.File.Delete(Path.Combine(Server.MapPath(“/images/cars”),
图像ID);
返回Json(“”);
}
视图: 删除

脚本:

   <script>
    function deleteCar(id)
    {
      swal({
      text: "You will not be able to recover this car !!",
      type: "warning",
      howCancelButton: true,
      confirmButtonText: "Yes, delete it !!",
      cancelButtonText: "No, cancel it !!",
      closeOnConfirm: false,
      closeOnCancel: true,
      showLoaderOnConfirm: true},
      function (isConfirm)
      {
        if (isConfirm){
         $.ajax({
         method: 'POST',
         url: '/Cars/Delete/' + id,
         success: function (response)
         {
           var row = document.getElementById(id);
           row.remove();
           swal("Deleted", "Car have been deleted.", "success");
         },
        error: function (error){sweetAlert("Oops...", "Something went 
        wrong!!","error");}
                });
                       }
       });   
    }
 </script>

功能删除车(id)
{
游泳({
文字:“你将无法找回这辆车!!”,
键入:“警告”,
是的,
confirmButtonText:“是的,删除它!!”,
取消按钮文字:“不,取消!!”,
CloseOnConfig:false,
真的,
showLoaderOnConfirm:true},
功能(isConfirm)
{
如果(我确认){
$.ajax({
方法:“POST”,
url:'/Cars/Delete/'+id,
成功:功能(响应)
{
var行=document.getElementById(id);
row.remove();
swal(“已删除”,“汽车已删除”,“成功”);
},
错误:函数(错误){sweetAlert(“Oops…”,“,出现了一些问题
错误!!“,“错误”);}
});
}
});   
}

post请求结果成功还是失败?你能提供更多的细节吗?这是失败的。结果只是消息“Oops..something出错”,但在我尝试使用get-request和add-delete-view编辑代码后,总是失败。因此,我返回到post request.url:“{controller}/{action}/{id}”这是我的路由。Http响应状态代码500或404是什么?您可以使用浏览器网络检查器(F12)查看此信息。如果结果是404,这意味着MVC找不到您正在调用的方法,将
RouteAttribute
[Route(“Cars/Delete/{id}”)]
放在Delete函数上可以解决这个问题。最佳实践是使用良好动词进行删除。您应该使用
方法:'DELETE',url:'/Cars/'+id
,控制器函数上的HttpVerb也应该是
[HttpDelete][Route(“/Cars/{id}”)]
状态为404。错误为“未捕获的语法错误:无效或意外令牌”Cars:479。