创建我的淘汰赛ViewModel时使用Razor模型的问题

时间:2013-07-02 04:57:36

标签: asp.net-mvc asp.net-mvc-4 knockout.js razor-2

我在设置我的淘汰虚拟机时遇到了在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上遇到语法错误。我怀疑可能是我的Razor-fu缺乏......:)

1 个答案:

答案 0 :(得分: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编码。