簡體   English   中英

將JSON發布到MVC控制器

[英]Post JSON to MVC controller

我看過各種問題和答案,但是我只是部分成功。

視圖正在傳遞此JSON:

{JsonInput: [["208-01", "003158"]], JobNumber: "test"}

$.ajax({
   type: "POST",
   url: "/Dash/SavePickups",
   contentType: 'application/json',
   dataType: "json",
   data: JSON.stringify({
       JsonInput: final,
       JobNumber:"test"
       }),

上面的Json字符串通過/ Dash / SavePickups發送到控制器

  [System.Web.Http.Route("Dash/SavePickups/{JsonInput}")]
    public JsonResult SavePickups(object[][] JsonInput)
    {
        var FailResult = new { Success = "False", Message = "Error" };
        var SuccessResult = new { Success = "True", Message = "Pickups Scheduled Successfully." };

       return Json(SuccessResult, JsonRequestBehavior.AllowGet);

    } 

僅有部分JSON字符串傳遞給JsonInput。 在Debug中,我看到帶有Obj數組208-01和003158的JsonInput對象。

為什么不包含JobNumber,我可以在chrome Network POST中看到發送給控制器的JSON字符串的一部分。

繼續maccettura的答案-您的問題是將JSON反序列化為對象。 您指定的JSON的格式為{JsonInput:[“ 1234”,“ 5667”],JobNo:“ Test”}

具有一種可能的數據結構

List<string> , String 

不會反序列化為“ sqaure”對象,例如

object [][]

我建議為您的json建立如下模型:

 public class SavePickupsModel 
{
     public List<string> JsonInput {get; set;}
     public string JobNo {get; set; }
}

然后將該模型用作方法的輸入:

[HttpPost]
[System.Web.Http.Route("Dash/SavePickups/{JsonInput}")]
public JsonResult SavePickups(SavePickupsModel JsonInput)
{
    var FailResult = new { Success = "False", Message = "Error" };
    var SuccessResult = new { Success = "True", Message = "Pickups Scheduled Successfully." };

   return Json(SuccessResult, JsonRequestBehavior.AllowGet);

} 

我將從使用[HttpPost]屬性標記您的控制器開始

[HttpPost]
[System.Web.Http.Route("Dash/SavePickups/{JsonInput}")]
public JsonResult SavePickups(object[][] JsonInput)
{

}

我還要指出,您的操作參數( object[][] JsonInput )對我來說並不正確。 您可能會發現json不會反序列化為該對象類型。

暫無
暫無

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

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