【发布时间】:2017-10-20 01:12:33
【问题描述】:
我在将数组发布到我的控制器时遇到问题。我正在发送一个项目列表,并且在项目中有一组组。即使我发布的 sendData 变量有数组,数组值在控制器中也显示为 null。
这是我要发布的数据。在这种情况下,变量数据是"[{"id":"123456789","firstName":"John","lastName":"Doe","UserGroups":["1","2"]}]"
我的用户模型:
[Display(Name = "SSO")]
[Required]
public virtual string ID { get; set; }
[Display(Name = "First Name")]
[Required]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required]
public string LastName { get; set; }
[Display(Name = "User Group(s)")]
public UserGroupModels[] UserGroup { get; set; }
组模型。你会注意到一对多的关系
public class UserGroupModels
{
public int ID { get; set; }
public string MAMUserGroup { get; set; }
}
AJAX 调用。你会注意到我也在使用 KnockoutJS
self.save = function (form) {
sendData = ko.toJSON(self.users);//value is "[{"id":"123456789","firstName":"John","lastName":"Doe","UserGroups":["1","2"]}]"
$.ajax({
url: '/Users/CreateMultiple',
contentType: 'application/json',
async: true,
traditional: true,
type: 'POST',
dataType: 'json',
data: sendData,
error: function (jqXHR, textStatus, errorThrown) {
console.log("FAIL: ");
alert("ERROR: " + errorThrown)
hidePleaseWait();
},
success: function (response) {
hidePleaseWait();
console.log(response.alreadyExistList);
这是我的控制器
public async Task<ActionResult> CreateMultiple(List<User> users)
{do something...}
当我查看 List<User> user 的本地变量时,我看到数组中的用户组数量正确(在本例中为 2),但每个值都是空的。例如users[0].UserGroups[0]=null、users[0].UserGroups[1]=null
【问题讨论】:
-
正如 Kevin 在下面所说的那样,您实际上只是将字符串数组传递给控制器,而不是 UserGroupModels 对象的 JSON。
标签: c# ajax asp.net-mvc knockout.js