2017-03-09 13 views
0

每當我發送'GET'JSON.stringify()使用AJAX,模型值總是接受null; 爲什麼只能綁定'POST'? 如果可能,我可以使用'GET'並仍然將數據綁定到模型上?爲什麼ASP MVC模型綁定器只接受POST中的JSON?

編輯:添加代碼示例

JS:

$.ajax({ 
     var modelsend = { 
      itemname: 'shoe', 
      itemcolor: 'red', 
      itemsize: '31', 
      itemvariety: 'SR-31', 
     } 
     type: "POST", 
     url: "@Url.Action("ShowData", "Controller")", 
     data: JSON.stringify(modelsend), 
     dataType: "json", 
     contentType: "application/json", 
     success: function (data) { 
      //do something with data 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      //show error 
     } 
    }); 

型號:

public class shoemodel 
{ 
    public string itemname { get; set; } 
    public string itemcolor { get; set; } 
    public string itemsize { get; set; } 
    public string itemvariety { get; set; } 
} 

控制器:

public ActionResult ShowData(shoemodel get) 
{ 
    List<DataGrid> fetch = func.getdata(get); 
    return Json(fetch); 
} 
+0

是的,這是可能的。用模型 –

+0

顯示你的ajax調用和控制器我假設你也設置'contentType:'json' - GET沒有正文。只要數據構造正確,你可以很好地綁定到GET方法 –

+0

是的,我的ajax使用contentType:「application/json」。好的,所以GET只發送沒有任何數據的網址,但POST發送的格式爲JSON。每當我發送GET時,body都是空的,我總是得到null,不是嗎?如果我發送GET,我的contentType無關緊要,因爲我不發送「內容」。 – KokoriNut

回答

1

也許你忘記了,GET用於查看的東西,而不會改變它,而POST是用來改變的東西。只有在使用Querystring時,Get才能用於更改某些內容。另一方面直接發送表單數據。

+0

我正在查看的東西,但與複雜的搜索,我更喜歡綁定我的搜索參數模型。將超過40個參數連接到URL是太重要了,並且在**** – KokoriNut

+0

中收到它是一個痛苦請注意,您發送的內容是「application/json」類型的,您在發佈對象模型發佈方式您使用post方法發送數據。在get方法中,你使用qurystring發佈他的數據。 – rexroxm