2016-11-23 10 views
2

私はウェブAPIを使ってウェブサイトを作っています。私はJSONを自分のコントローラに送信しようとしましたが、これは私が得続けるエラーです。JSONをWeb APIに送信する方法は?

Multiple actions were found that match the request: 
Post on type AuctionWebsiteASP.Controllers.MovesController 
readDatabase on type AuctionWebsiteASP.Controllers.MovesController 
newItem on type AuctionWebsiteASP.Controllers.MovesController 

最初に修正プログラムを検索しましたが、ここで修正されたものはありませんでした。

マイコントローラー

public class MovesController : ApiController 
{ 
    [AcceptVerbs("GET", "POST")] 
    public HttpResponseMessage Post([FromBody] Product product) 
    { 
     products.Add(product); 
     newItem(); 
     return Request.CreateResponse(HttpStatusCode.OK, product); 
    } 
} 

私のJS

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "/api/moves/", 
    data: source, 
    success: function (data) { 
     $("#nStart").val(null); 
     $("#nImg").val(null); 
     $("#nMaker").val(null); 
     $("#nModel").val(null); 
     $("#nSerial").val(null); 
     $("#nCpu").val(null); 
     $("#nRam").val(null); 
     $("#nGpu").val(null); 
     $("#nStorage").val(null); 
     $("#nBattery").val(null); 
     $("#nDrivers").val(null); 
     $("#nAccessories").val(null); 
     $("#nNotes").val(null); 
     console.log("Data has been sent!"); 
    }, 
    error: function (error) { 
     jsonValue = jQuery.parseJSON(error.responseText); 
     alert("ERROR!"); 
    } 
}); 
事前に

ありがとう!

routes.MapHttpRoute(
    name: "API Default", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional }); 

+0

コントローラ内の 'public HttpResponseMessage Post([FromBody] Product product)'メソッドだけですか? – Satpal

+0

いいえ、Routes.MapHttpRoute( 名前: "DefaultApi"、 routeTemplate: "api/{controller}/{action}/{id}"を使用していませんでした)、 デフォルト:new {id = RouteParameter.Optional } ''とURLにアクションを追加しましたが、助けてくれませんでした。 – jeepingviini

答えて

2

あなたのルートは、おそらくこの

routes.MapHttpRoute(
    name: "API Default", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional }); 

しかし、あなたはそのような経路を介してより多くの情報をWEBAPIを提供する必要が同じHTTPメソッドで複数のアクションを持っているためのようです各アクションを区別するためにRoute属性を使用してください。例:

public class MovesController : ApiController 
{ 
    [Route("Product")] 
    public HttpResponseMessage Post([FromBody] Product product) 
    { 
     products.Add(product); 
     newItem(); 
     return Request.CreateResponse(HttpStatusCode.OK, product); 
    } 
    } 

+0

申し訳ありませんが、私のルートはすでに{アクション} – jeepingviini

+0

であり、 'Route'属性を使用しようとしました –

+0

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

関連する問題