[英]AJAX DELETE request in asp.net MVC
我一直認為刪除請求應該使用類型:“ DELETE”來完成。 但是,它似乎在.NET中不起作用
$.ajax({
type: "GET",
url: '/TestController/DeleteTest?id=10',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data) {
// Works
}
},
error: function (erro) {
console.debug(erro);
}
});
控制器:
[HttpGet]
public JsonResult DeleteTest()
{
int id= Int32.Parse(Request["id"]);
var myTableTest= db.myTable.Where(x => x.id== id).FirstOrDefault();
db.mytable.Remove(myTableTest);
db.SaveChanges();
return Json(true, JsonRequestBehavior.AllowGet);
}
此代碼可以正常工作! 但是,如果我更改為鍵入:“ DELETE”,它將不再起作用。 那么,asp.net是否具有HttpDelete?
謝謝
您的方法裝飾有[HttpGet]
屬性。 這告訴框架,僅當使用GET
動詞時才應考慮該方法。
如果希望它響應DELETE
,則需要將屬性更改為[HttpDelete]
:
[HttpDelete]
public JsonResult DeleteTest()
{
...
}
您應該能夠使用[HttpDelete]
屬性而不是[HttpGet]
裝飾動作。 我還將它設置為返回ActionResult
而不是JsonResult
並在成功時返回new HttpStatusCodeResult(200)
的JsonResult
new HttpStatusCodeResult(200)
,以確保您的ajax調用正確理解了返回的結果。
在asp.net-mvc中,我們有HttpGet
和HttpPost
,在這種特殊情況下,您應該使用HttpPost
而不是HttpGet
,否則任何人都可以使用查詢字符串訪問url以請求刪除任何記錄,而另一件事是不使用魔術字符串生成網址,而不是使用Url.Action
方法,該方法會為您生成正確的網址。
更改您的jquery ajax調用以使用post:
$.ajax({
type: "POST",
url: '@Url.Action("DeleteTest","Test")',
data: {id:10},
contentType: 'application/json; charset=utf-8',
success: function (data) {
然后在您的操作中使用HttpPost
並將參數添加到您的操作方法簽名中,例如:
[HttpPost]
public JsonResult DeleteTest(int id)
{
var myTableTest= db.myTable.Where(x => x.id== id).FirstOrDefault();
db.mytable.Remove(myTableTest);
db.SaveChanges();
return Json(true, JsonRequestBehavior.AllowGet);
}
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.