gpt4 book ai didi

c# - MVC 方法不接收 json 数组作为列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:14 25 4
gpt4 key购买 nike

我的 MVC 方法正在接收模型的其余部分,但不是我的列表

JavaScript:

var userSettings = [ { Name: "SettingName", Value: "SettingValue" }, { Name: "SettingName1", Value: "SettingValue2" }];

var data = {
Email: "thing@what.com",
Password: "123",
ConfirmPassword: "123",
UserSettings: JSON.stringify(userSettings)
}

$.ajax({
url: this.action,
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)

})

C#/MVC

[HttpPost]
public ActionResult Create(CreateUser model)
{
//stuff
}

public class CreateUser
{
public string Email { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
public List<NameValue> UserSettings { get; set; }
}

public class NameValue
{
public string Name { get; set; }
public string Value { get; set; }
}

我在这里错过了什么?为什么我的 UserSettings 总是空着?

如果我将 UserSettings 更改为 String 而不是 List,它会收到 json 字符串,但我无法将其作为列表接收

最佳答案

不要将 userSettings 字符串化。

这样做会创建带有转义引号的字符串,而 MVC 将不知道如何绑定(bind)它。

使用字符串化:

"{"Email":"thing@what.com","Password":"123","ConfirmPassword":"123","UserSettings":"[{\"Name\":\"SettingName\",\"Value\":\"SettingValue\"},{\"Name\":\"SettingName1\",\"Value\":\"SettingValue2\"}]"}"

没有字符串化:

"{"Email":"thing@what.com","Password":"123","ConfirmPassword":"123","UserSettings":[{"Name":"SettingName","Value":"SettingValue"},{"Name":"SettingName1","Value":"SettingValue2"}]}"

您的代码应如下所示:

var data = {
Email: "thing@what.com",
Password: "123",
ConfirmPassword: "123",
UserSettings: userSettings
}

关于c# - MVC 方法不接收 json 数组作为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com