我遇到了一个问题,无法将一个对象数组传递给MVC控制器。我总是得到null
。
这是我在客户端的代码:
function Item() {
this.ItemId = GetRandomId('i');
this.Title = '';
this.Questions = [];
}
function Question() {
this.QuestionId = GetRandomId('q');
this.Description = '';
this.Values = [];
}
function QuestionValue() {
this.ValueId = GetRandomId('v');
this.Description = '';
this.IsCorrect = false;
}
我有一个数组'items',它被填充成这样:
items['i123'] = new Item();
在服务器端,我将其映射为:
public class EvItemJs
{
public int ItemId { get; set; }
public string Title { get; set; }
public EvQuestionJs[] Questions { get; set; }
}
public class EvQuestionJs
{
public int QuestionId { get; set; }
public string Description { get; set; }
public EvQuestionValueJs[] Values { get; set; }
}
public class EvQuestionValueJs
{
public int ValueId { get; set; }
public string Description { get; set; }
public string IsCorrect { get; set; }
}
我的MVC控制器方法如下:
[HttpPost]
public ActionResult Create(int userId, string userHash, EvItemJs[] items)
在客户端,我使用以下代码调用MVC控制器:
var data = { userId: global_data.userId, userHash: global_data.userHash, items: items };
$.ajax({
url: '/Evaluations/Create',
type: "POST",
data: JSON.stringify(data),
dataType: "json",
contentType: "application/json; charset=utf-8",
async: true,
cache: false,
success: function (msg) {
},
error: function (data, ajaxOptions, thrownError) {
}
});
userId和userHash参数的值是正确的,但是items始终为null。
有人知道出了什么问题吗?我尝试过使用JSON.stringify
和$.toJSON
。我记得有时候我会用序列化解决这个问题,但是我找不到它在哪里。
编辑:这是浏览器发送给服务器的内容:
Dictionary<string, EvItemJs>
و›؟ن»£EvItemJs[] items
م€‚IDictionary<string, EvItemJs>
و³¨ه†Œن¸€ن¸ھè‡ھه®ڑن¹‰çڑ„و¨،ه‹ç»‘ه®ڑه™¨م€‚