C# 使用AJAX-ASP.NETMVC5删除数据库表中包含图像和多外键的行
我正在尝试使用Ajax删除表中的行(Cars),以便在尝试删除表中的行时页面不会刷新。这是我的代码,但目前按Delete键没有任何作用: 表(车辆): 身份证件 形象 BodyId(FK) 齿轮箱ID(FK) 办公室ID(FK) 控制器: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);
[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。