2

在设置淘汰赛 VM 时,我在 javascript 调用中使用模型时遇到问题。

@model List<AdminGui.Models.Domain>

<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js" type="text/javascript"></script>
<script type="text/javascript">
function ViewModel() {
    var self = this;

    self.domains = ko.observableArray(
        ko.utils.arrayMap(@Model, function(item) {
            return new Domain(item.guid, item.description, item.namespaces);
        }));
}

我在 ko.utils.arrayMap 调用中遇到 @Model 语法错误。我怀疑可能是我的剃须刀缺少... :)

4

1 回答 1

3

Model是您的 C# 模型,不能直接从 JavaScript 使用,因为编写@Model只是调用ToString它,这不是您需要的。

您需要的是将模型转换为 JSON,您可以使用该Json.Encode方法执行此操作

self.domains = ko.observableArray(
        ko.utils.arrayMap(@Html.Raw(Json.Encode(Model)), function(item) {
            return new Domain(item.guid, item.description, item.namespaces);
        }));

注意:您需要将其包装起来Html.Raw以关闭 Razor 中的自动 HTML 编码。

于 2013-07-02T05:02:03.067 回答