0

アクション メソッドに渡す GUID の Json 文字列を作成する際に問題が発生しています。

GUID を次のような配列に集めました。

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 は null です。これがモデル バインディングであると判断されない理由と、それを修正する方法を誰かが説明できますか。私が見つけた他の例は、単に私が現在行っていることを行うように指示するだけです。

ありがとうございました

4

1 に答える 1

2

javascript object{}から javascript array に変更します[]。これは にマップされ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 に答える