繁体   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