我堅持的東西很基本,我相信,因此我需要一些專業知識來幫助我完成這項任務。Knockout Js字典顯示MVC
我有一個字典,它需要一個整數和字符串作爲值來存儲結果列表(我將在下面顯示)。我的視圖模型和控制器有這樣的代碼,該數據作爲JSON字符串張貼到淘汰賽:
[代碼視圖模型]
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結果,以便在顯示它以表的格式,例如
表
1凱特
3亞歷
4簡
在此先感謝
傑斯蒙德
在我看來,它是貫徹落實「mapDictionaryToArray」在服務器端的更好的主意。編譯代碼的工作速度要快得多,對吧? – RredCat