0

我在构建 Json 字符串以传递给我的操作方法时遇到了一些问题。

我已将我的指南收集到这样的数组中:

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,并给它操作方法采用的参数名称。

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 是空的。谁能解释为什么没有选择模型绑定,以及如何纠正它。我发现的其他示例只是告诉我做我目前正在做的事情。

谢谢

4

1 回答 1

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++;
                }
            });
        });
于 2013-07-29T14:31:45.990 回答