2016-06-15 12 views
0

のタイプのajaxが呼び出されますajaxの呼び出しのタイプ[HttpDelete] MVC属性はリッスンしますか?私はJsonResultの下に[HttpDelete]属性で装飾されていると言う。[HttpDelete] Asp.Net MVC

[HttpDelete] 
public JsonResult DeleteData(string id) 
{ 
    //deleting the data 
    return new Json{Data="Deleted", JsonRequestBehavior=JsonRequestBehavior.AllowGet}; 
} 

は今、私は$.ajax$.postでこれらJsonResultを起動しようとしましたが、それらの両方は、このコントローラのメソッドをトレースできませんでした。その明確な私は[HttpPost]属性の装飾を通してこれを行うことができますが、私はdataを削除しているので、それはより良いIMHOでなければなりません。 [HttpDelete]属性で装飾されたコントローラメソッドをajaxまで呼び出すにはどうすればよいですか?

答えて

4
それはあなたがコントローラーを持っているので、場合(など、 [HttpPost]にすなわち GETマップに [HttpGet]POSTマップ)

をターゲットにどのアクションを知っているように、MVCは、それらに対応する属性に適切なHTTP動詞をマッピング処理する

[HttpDelete]属性で装飾されたアクションの場合は、実際にヒットするためにDELETEリクエストを行う必要があります。

jQueryのAJAX呼び出しを行うときは、すぐ下に見られるように、明示的にtype: 'DELETE'を使用する必要がありますように、これは、非常に簡単に扱うことができます。

$.ajax({ 
    url: '{your-controller-action}', 
    type: 'DELETE', 
    success: function(result) { 
      // Do something 
    } 
}); 
+0

右ああ...これは私が欠けていたものです..私たちは、この権利のための省略名はありませんか? '$ .post'や' $ .get'のように... –

+1

私は恐れていません。あなたが投稿したもの(すなわち、 '.post'と' $ .get')は、直接マップする唯一の[短手関数](https://api.jquery.com/category/ajax/shorthand-methods/)です。動詞に。使いやすさのために自分のショートハンドバージョンを作成しない限り、おそらく '$ .ajax'を使う必要があります。 –

+0

オハイオ州..オハイオ州..申し訳ありません..説明のためにありがとうございます.. :)少しの瞬間で受け入れてください:) –