我在设置我的淘汰虚拟机时遇到了在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缺乏......:)
答案 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编码。