我遇到一些问题,构建一个Json字符串guid以传递给我的action方法。
我已将我的guids收集到这样的数组中:
var regEx = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
var arrJson = {};
var i = 0;
$('#destGrid tr').each(function () {
$(this).find('td').each(function () {
var td = $(this);
if (regEx.test(td[0].innerText)) {
arrJson[i] = td[0].innerText;
i++;
}
});
});
然后我在数组上使用json.stringify,并为其赋予action方法所采用的param名称。
if (arrJson[0] != null) {
var jsonData = JSON.stringify({ selectedMatters: arrJson });
此时,如果我调试javaScript,我可以检查字符串的值,并且我可以看到所有引号都已被转义:
"{\"selectedMatters\":{\"0\":\"f7c918d6-4e40-e211-9854-00155d010d00\",\"1\":\"77d4d836-ce45-e211-9854-00155d010d00\",\"2\":\"c6849622-cf45-e211-9854-00155d010d00\",\"3\":\"0ce4dc5b-cf45-e211-9854-00155d010d00\"}}"
为了完整性,方法签名如下所示:
public bool UpdateMattersForGrid(List<Guid> selectedMatters)
{
}
我尝试了很多东西,但是大多数时候selectedMatters都是null。任何人都可以解释为什么这不是模型绑定,以及我如何纠正它。我发现的其他例子只是告诉我做我目前正在做的事情。
谢谢
答案 0 :(得分:2)
我会从javascript对象{}
更改为javascript数组[]
。这将映射到List<>
。
所以javascript看起来像这样:
var regEx = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
var arrJson = []; //change to array
var i = 0;
$('#destGrid tr').each(function () {
$(this).find('td').each(function () {
var td = $(this);
if (regEx.test(td[0].innerText)) {
arrJson.push(td[0].innerText); // push into array
i++;
}
});
});