2011-11-29 19 views
0

ASP.NET MVC 3を使用するコードベースを継承しました。このプロジェクトは、 "/ svcs/orders /"という形式のAPIを公開しているようです。 MyProject.Areas.svcs.Controllers.OrdersControllerにあるファイルに既に書き込まれているメソッドがあります。そのコントローラは、次のようになります。ASP.NET MVC 3でPUTメソッドを実行

public class OrdersController : Controller 
{ 
    [AcceptVerbs(HttpVerbs.Put)] 
    public ActionResult AddOrder(OrderModel data) 
    { 
    // Do Stuff... 

    var result = GetResult(); 
    return Json(result, JsonRequestBehavior.AllowGet); 
    } 
} 

私はjQueryの経由でこのメソッドを呼び出す方法を把握しようとしています。私は "/ svcs/orders /"のアドレスでサービスを参照できることを知っています。しかし、私はどのようにサービスにデータを "PUT"するのか分かりません。 AddOrderメソッドで予期されるOrderModelパラメーターを設定するにはどうすればよいですか?それは私にとってとても奇妙です。現在、私は次のことを試しています:

var productID = $("#hidProductID").val(); 
var quantity = $("#txtQuantity").val(); 

$.ajax({ 
    url: '/svcs/orders', 
    type: 'PUT', 
    contentType: 'application/json; charset=utf-8', 
    success: function (result) { 
    alert(result); 
    }, 
    error: function() { 
    alert("There was an error."); 
    } 
}); 

ありがとうございました!

答えて

0

OrderModelを、JSONオブジェクトの形式で、ajaxオプションのdataプロパティに渡すことができます。

var productID = $("#hidProductID").val(); 
var quantity = $("#txtQuantity").val(); 

$.ajax({ 
    url: '/svcs/orders', 
    type: 'PUT', 
    data: { 
    productID: productID, 
    quantity: quantity 
    }, 
    contentType: 'application/json; charset=utf-8', 
    success: function (result) { 
    alert(result); 
    }, 
    error: function() { 
    alert("There was an error."); 
    } 
}); 
+0

これを行うと500エラーが発生します。なぜこれが起こるのだろうか?私はそれを持っているので、私の方法は "ok"を返す以外の何もしていません。 – Villager

+0

コントローラメソッドAddOrderにブレークポイントを設定し、ヒットしたかどうか、およびデバッガを使用してOrderModelデータ項目を検査するかどうかを確認します。ヒットしなければルーティングに問題があります。また、JSでクライアント側で適切なオブジェクトを構築するのに役立つようにするには、 'OrderModel'のデータ型をポストする必要があります。 – mattypiper