我试图调用此方法:
// POST: /Manufacturer/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Manufacturer manufacturer = unitOfWork.manufacturerRepository.GetByID(id);
unitOfWork.manufacturerRepository.Delete(manufacturer);
unitOfWork.Save();
return Json(new { ok = true, newurl = Url.Action("Index", "Manufacturer") });
}
用这个ajax:
$.ajax({
url: "/Manufacturer/Delete/" + $('#Id').val(),
type: "POST",
contentType: "application/json; charset=utf-8",
headers: {
'RequestVerificationToken': '@TokenHeaderValue()'
},
data: { id: $('#Id').val() },
error: function (data) {
alert("error" + data);
},
success: function (data) {
if (data.ok)
{
$("#Modal").modal('hide');
}
else {
$('.modal-body').html(data);
}
}
})
我签了fiddler我可以看到ID正确传递。我把断点放在方法的开头,但它没有被击中。之前打电话崩溃。 我该怎么做才能找到造成这次崩溃的原因?
来自fiddler的数据:POST http://localhost:1809/Manufacturer/Delete/34 HTTP/1.1
Host: localhost:1809
Connection: keep-alive
Content-Length: 5
Accept: */*
RequestVerificationToken: TQY9NrchHlFT6IBaTv1R4daiwGoRH0yv3gHJwpatGj
Origin: http://localhost:1809
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://localhost:1809/Admin/Index
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: __RequestVerificationToken=r5YwV-v
id=34
答案 0 :(得分:3)
从POST
Url中删除内容。在GET
请求中使用了Url.Id.但是如果要在ajax调用的数据部分中使用POST Json.stringify()
。
$.ajax({
url: "/Manufacturer/Delete",
type: "POST",
contentType: "application/json; charset=utf-8",
headers: {
'RequestVerificationToken': '@TokenHeaderValue()'
},
data: JSON.stringify({ id: $('#Id').val() }),
error: function (data) {
alert("error" + data);
},
success: function (data) {
if (data.ok)
{
$("#Modal").modal('hide');
}
else {
$('.modal-body').html(data);
}
}
})
答案 1 :(得分:1)
尝试从帖子网址中删除ID。这样它将它传递给正确的方法,id可以绑定到发布的数据“id”
$.ajax({
url: "/Manufacturer/Delete/"
.......
传递id时,它应该是一个JSON字符串,我们可以在这里使用 JSON.stringify(value [,replacer [,space]])。
data:JSON.stringify({id:$('#Id')。val()})
如果需要,您也可以使用XML并通过以下方式将其解析为字符串:
(new XMLSerializer())。serializeToString(xml);