从视图发送 JSON 到控制器 ASP.NET MVC 给出空值
Sending JSON from View to Controller ASP.NET MVC gives null values
我在将 JSON 数据从 MVC 视图发送到控制器时遇到问题,我得到的控制器是:
我发送的 JSON Url.Action 看起来像这样:(我通过 .push() 然后 JSON.stringify 自己将数组添加到数组来创建它)
[
[
{
"isOrdered":false,
"orderLineId":"4550",
"comment":"",
"orderId":"2789"
}
],
[
{
"isOrdered":false,
"orderLineId":"4551",
"comment":"",
"orderId":"2789"
}
]
]
我用JQueryajaxPOST
$.ajax({
type: "POST",
url: "@Url.Action("SaveCheckboxesAndComments")",
data: JSON.stringify(array),
traditional: true,
contentType: "application/json; charset=utf-8",
dataType: 'json'
});
和我的控制器:
public class JsonData
{
public bool IsOrdered { get; set; }
public string OrderLineId { get; set; }
public string Comment { get; set; }
public int OrderId { get; set; }
}
[HttpPost]
public async Task<ActionResult> SaveCheckboxesAndComments(List<JsonData> jsonArray)
{...
我应该更改我的 class JsonData 或 JS 中的某些内容以获取值吗?因为不知何故“框架”在起作用。
一些尝试:
- 在开发控制台中打开您的网络选项卡并检查
POST
请求的详细信息以确保 url 正确并且发送的 JSON 是正确的你期待什么
- 用
[DataContract]
属性修饰 JsonData
class,用 [DataMember(Name = "Name")]
属性修饰每个 属性 - 确保你不运行 大小写问题(class 中的 属性 名称全部大写,而您的 json 均以小写字母开头)。
- 您生成的 Json 上似乎有一组额外的外部
[
]
括号。因此,虽然您的操作正在等待 List<JsonData> jsonArray
,但它正在发送 List<List<JsonData> jsonArray>
。查看它如何从正在发送的 json 中删除最外面的方括号。
我在将 JSON 数据从 MVC 视图发送到控制器时遇到问题,我得到的控制器是:
我发送的 JSON Url.Action 看起来像这样:(我通过 .push() 然后 JSON.stringify 自己将数组添加到数组来创建它)
[
[
{
"isOrdered":false,
"orderLineId":"4550",
"comment":"",
"orderId":"2789"
}
],
[
{
"isOrdered":false,
"orderLineId":"4551",
"comment":"",
"orderId":"2789"
}
]
]
我用JQueryajaxPOST
$.ajax({
type: "POST",
url: "@Url.Action("SaveCheckboxesAndComments")",
data: JSON.stringify(array),
traditional: true,
contentType: "application/json; charset=utf-8",
dataType: 'json'
});
和我的控制器:
public class JsonData
{
public bool IsOrdered { get; set; }
public string OrderLineId { get; set; }
public string Comment { get; set; }
public int OrderId { get; set; }
}
[HttpPost]
public async Task<ActionResult> SaveCheckboxesAndComments(List<JsonData> jsonArray)
{...
我应该更改我的 class JsonData 或 JS 中的某些内容以获取值吗?因为不知何故“框架”在起作用。
一些尝试:
- 在开发控制台中打开您的网络选项卡并检查
POST
请求的详细信息以确保 url 正确并且发送的 JSON 是正确的你期待什么 - 用
[DataContract]
属性修饰JsonData
class,用[DataMember(Name = "Name")]
属性修饰每个 属性 - 确保你不运行 大小写问题(class 中的 属性 名称全部大写,而您的 json 均以小写字母开头)。 - 您生成的 Json 上似乎有一组额外的外部
[
]
括号。因此,虽然您的操作正在等待List<JsonData> jsonArray
,但它正在发送List<List<JsonData> jsonArray>
。查看它如何从正在发送的 json 中删除最外面的方括号。