7

私は自分が信じている非常に基本的なことに固執しているので、このタスクを達成するためにいくつかの専門知識が必要です。

結果のリストを保存するために、整数と文字列を値として受け取る辞書があります(これを以下に示します)。私のビューモデルとコントローラーには次のコードがあり、データをJSON文字列としてノックアウトに送信します。

[ViewModelのコード]

public class ResultModel
{
    public Dictionary<int, string> dictResult { get; set; }
    public string dictResultJson { get; set; }

    public ResultModel()
    {
        dictResult = new Dictionary<int, string>();
    }
}

[cshtmlファイルのコード]

<h2>Results</h2>
<table>
    <tbody data-bind="template: { name: 'tblResult', foreach: dictResultJson() }"></tbody>
</table>

<script id="tblResult" type="text/html">
    <tr>
        <td data-bind="value: key"></td>
        <td data-bind="value: value"></td>
    </tr>
</script>

<script type="text/javascript">
    var ResultModel = function(m) {
        var self = this;
        self.dictResultJson = ko.observableArray(mapDictionaryToArray(m.DictJson));
    };

    function mapDictionaryToArray(dictionary) {
        var result = [];
        for (var key in dictionary) {
            if (dictionary.hasOwnProperty(key)) {
                result.push({ key: key, value: dictionary[key] }); 
            }  
        }

        return result;
    }

    var data = @(Html.Raw(Json.Encode(Model)));
    var dataFromServer = ko.utils.parseJson(data.dictResultJson);
    console.log(dataFromServer);  

    ko.applyBindings(new ResultModel(dataFromServer));
    console.log("apply binding");
</script>

私のcshtmlファイルでは、MVCコントローラーから返されたオブジェクトを解析し、それを配列に変換しています。ここでの問題は、データが表示されていないことですが、変数dataFromServerには適切なデータが含まれています。このデータがあります:

オブジェクト{1:「ケイト」、3:「アレックス」、4:「ジェーン」}

さて、このjson Resultをループして、次のようなテーブル形式で表示するにはどうすればよいですか?

テーブル

1ケイト

3アレックス

4ジェーン

前もって感謝します

ジェスモンド

4

1 に答える 1

2

テーブル内の値をテキストとして表示する場合は、代わりにテキストバインディングを使用する必要がありますvalue

<tr>
    <td data-bind="text: key"></td>
    <td data-bind="text: value"></td>
</tr>

そして、コードにはもう1つの問題があります。を呼び出すとnew ResultModel(dataFromServer)dataFromServerはすでに正しい形式のデータが含まれています。m.DictJsonしたがって、ResultModel関数には必要ありません。

var ResultModel = function(m) {
        var self = this;
        self.dictResultJson = ko.observableArray(mapDictionaryToArray(m));
};
于 2012-12-09T10:05:02.203 に答える