我看过各种问题和答案,但我只是部分成功。
View正在传递此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 String将发送到/ 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中,我看到了JsonInput对象,Obj数组为208-01和003158.
为什么不包含JobNumber,我可以在chrome Network POST中看到它发送给控制器的JSON字符串的一部分..
答案 0 :(得分:4)
继续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);
}
答案 1 :(得分:1)
我首先使用[HttpPost]
属性
[HttpPost]
[System.Web.Http.Route("Dash/SavePickups/{JsonInput}")]
public JsonResult SavePickups(object[][] JsonInput)
{
}
我还要指出,您的操作参数(object[][] JsonInput
)对我来说不合适。您可能会发现json没有反序列化为该对象类型。