[英]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.