2015-04-28 56 views
0

我在我的SQL DB,JT和Sales中有一個web-api,2個表。在添加()到數據庫之前,我需要海報首先在uri中指定他/她是否要發佈到JT表或銷售。我的問題是,我的post方法只接受一個模型綁定,它不需要像下面我的代碼所示的兩個。它沒有錯誤,但是當我發佈該邏輯時,它會在POSTMAN中返回一個錯誤,它不能將多個參數('JT'和'Sales')綁定到請求的內容。如何在web api中執行多個發佈參數?

這裏是我的代碼:

[ResponseType(typeof(JT))] 
public HttpResponseMessage PostJT(JT JT, Sales Sales, [FromUri] string tran) 
     { 
      try 
      { 
       if (ModelState.IsValid) 
       { 
       if (tran == null) 
          { 
           return Request.CreateResponse(HttpStatusCode.Unauthorized, "Unauthorized Access!"); 
          } 
          else 
          { 
           switch (tran) 
           { 
            case "JT": db.JTs.Add(JT); 
             break; 
            case "sales": db.Sales_.Add(Sales); 
             break; 
           } 
          } 
          db.SaveChanges(); 
          return Request.CreateErrorResponse(HttpStatusCode.OK, "Added!"); 
         } 
//below are just elses with return messages. 
+0

完整的詳細信息看[這個答案](http://stackoverflow.com/a/33345873/65775)。您可以使用自定義參數綁定將多個POST參數傳遞給任何API方法。 – Keith

回答

0

還有就是要傳遞多個參數沒有直接的方法,但你可以使用下面的變通

這個鏈接給出了Web API passing Multiple parameter

$.ajax(
    { 
     url: "samples/PostAlbum", 
     type: "POST", 
     contentType: "application/json", 
     data: JSON.stringify({ JT: jt, Sales: sales, UserToken: userToken }), 
      success: function (result) { 
      alert(result); 
     } 
    }); 



     [HttpPost] 
     public string PostAlbum(JObject jsonData) 
     { 
      try 
      { 
       if (ModelState.IsValid) 
       { 
       if (tran == null) 
          { 
          return Request.CreateResponse(HttpStatusCode.Unauthorized, 
          "Unauthorized Access!"); 
          } 
          else 
          { 
           dynamic json = jsonData; 
           JObject jtObject = json.JT; 
           JObject salesObject = json.Sales; 

           var jt = jtObject.ToObject<JT>(); 
           var sales = salesObject.ToObject<Sales>(); 

           if (jt != null) 
           { 
            db.JTs.Add(JT); 
           } 
           else if (sales != null) 
           { 
            db.Sales_.Add(Sales); 
           } 
          } 
          db.SaveChanges(); 
        return Request.CreateErrorResponse(HttpStatusCode.OK, "Added!"); 
      } 
    //below are just elses with return messages. 
     } 
+0

我試圖使用JObject,但似乎沒有被我的解決方案認可。我也通過nuget安裝了Json.NET。 –

相關問題