2016-07-14 49 views
0

我在將2個特定對象發送到服務器時遇到問題。WebAPI/MVC - 將json列表發送到服務器

  1. 我有一個輸入和一個文本區域

    形式發送

    功能SendServer(){ $ 阿賈克斯({

      url: '/api/Service', 
          type: "POST", 
          contentType: 'application/json', 
          data: {} //!!! 
          success: function (response) { 
          }, 
    
          error: function (er) { 
          } 
         }); 
    

    }

的問題是,我的文本區域將包含表單的用戶輸入JSON:

{ 
    "list": [ 
    { 
     "name": "john smith", 
     "lastaccess": "2016-01-01T07:21:31 -00:00" 
    }, 
    { 
     "name": "paul marley", 
     "lastaccess": "2016-01-01T07:22:31 -00:00" 
    } 
    ] 
} 

我需要將這兩個值發送給服務器:

public class ServiceController : ApiController 
{ 
    public string Post(*something*) 
    {} 
} 

我能到達服務器,但我不知道如何正確發送2個對象,以便我可以在服務器上檢索它們?

我一直在嘗試了很多的選擇,沒有什麼工作:(

回答

1

既然您發送該用戶輸入使用形式的JSON,你可以考慮使用JObject類作爲您的Web API方法參數。

因此,在您的形式現在

<form id="form1"> 
    <input type="text" id="val1" name="val1" value="1" /> 
    <textarea class="form-control" id="json" name="json"></textarea> 
    <button id="send">Send</button> 
</form> 

,點擊按鈕,讀取兩個輸入值,並創建一個新的對象,然後發送到服務器。

$(function() { 
    $("#send").click(function (e) { 
     e.preventDefault(); 

     var v = $("#val1").val(); 
     var t = $("#json").val(); 
     var d = { val1: v, json: t }; 
     $.ajax({ 

      url: '/api/values', 
      type: "POST", 
      contentType: 'application/json', 
      data: JSON.stringify(d), 
      success: function (response) { 
       console.log(response); 
      }, 

      error: function (er) { 
       console.log(er); 
      } 
     }); 

    }); 
}); 

而在WebApi端點中,您可以使用JObject作爲參數。默認模型聯編程序將能夠將發佈的值映射到JObject的對象。

public HttpResponseMessage Post([FromBody]JObject value) 
    { 
     var v = value["val1"]; 
     var j = value["json"]; 
     // do something with these 
     // v.Value will give you the value 
     return Request.CreateResponse("Something received"); 
    } 

JObject類屬於Newtonsoft.Json.Linq命名空間。所以請確保有一個使用聲明,將其包含在您的web api控制器中。

+0

是的,這是我在圈子裏找的東西,謝謝! – AdrianD