簡體   English   中英

ASP.NET MVC中的AJAX DELETE請求

[英]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中,我們有HttpGetHttpPost ,在這種特殊情況下,您應該使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM