簡體   English   中英

對C#Controller的HTTP POST請求

[英]HTTP POST request to C# Controller

我正在嘗試向我的C#控制器發出HTTP POST請求,但是我需要向數據發送一個數組,所以我嘗試使用JSON.stringify,但是當我開始調試時,我的控制器中的輸入參數是NULL? 我正在從外部API接收天氣預報列表,所以我需要為列表中的每個項目創建新變量,它有一些字段,如:最大和最小溫度,描述,濕度,壓力等,然后當然填寫這些帶有數據的字段並將該變量添加到我的數組中。 然后我需要將這個數組傳遞給我的控制器,這樣我就可以將它存儲在我的數據庫中...我應該在控制器中放入什么類型,這樣它就不會是NULL? 我是全新的,所以請幫助,任何幫助真的更受歡迎!

以下是我要嘗試的代碼:

 var myData = { id:100, description:"some text"};
 var myDataArray= new Array();   
 myDataArray.push(myData);   
 $.ajax({
    dataType: "json",
    type: "POST",
    url: "/Weather1/Weather_post",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(myDataArray),
    success: function (data) {
        console.log(("OK"));
    },
    error: function (error)
    { console.log("NOT OK"); }
})

控制器:

[HttpPost]
public JsonResult Weather_post(String MyModuleList)

模型綁定不知道“MyModuleList”是什么。 您可以在此處使用強類型模型,MVC會將JSON綁定到它。

考慮JSON:

var data = {
    moduleList: [
        { id:100, description:"some text"}
    ];
};

和型號:

public class ModuleListModel
{
    public List<ModuleModel> ModuleList { get; set; }
}
public class ModuleModel
{
    public int Id { get; set; }
    public string Description { get; set; }
}

和行動:

[HttpPost]
public JsonResult Weather_post(ModuleListModel model)
{ 
    ... 
}

結合@Timothy Shields的回答:

您在ajax調用中缺少processData:false。 沒有它,ajax將嘗試將數據打包到URL查詢字符串中。 (見這里: http//api.jquery.com/jQuery.ajax/

你應該好。

您在ajax調用中缺少processData: false 沒有它, ajax將嘗試將data打包到URL查詢字符串中。 (見這里: http//api.jquery.com/jQuery.ajax/

如果data{ 'animal': 'elephant', 'count': 5 }processDatatrue (默認值),則ajax將使用空HTTP請求對URL /Weather1/Weather_post?animal=elephant&count=5進行POST身體。 這就是你想要processData: false

嘗試如下:

 var myData = { id:100, description:"some text"};
 var myDataArray= new Array();   
 myDataArray.push(myData); 
 var param = JSON.stringify(myDataArray);  
 $.ajax({
     dataType: "json",
     type: "POST",
     url: "/Weather1/Weather_post",
     contentType: "application/json; charset=utf-8",
     data: {'MyModuleList': param },
     success: function (data) {
          console.log(("OK"));
     },
     error: function (error)
     { console.log("NOT OK"); }
 })

您可能需要將參數名稱與數據一起傳遞。 就像是:

 data: {'MyModuleList': JSON.stringify(myDataArray)},

看看這是否適合你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM