如何使用ko.mapping脚本(Razor页面)访问和显示映射数据?

时间:2013-01-31 22:14:30

标签: json knockout.js

Java脚本(使用Can`t get json object to with knockout answer {1}方法获取数据):

<script type="text/javascript">
    $.getJSON("/api/TelemarketingApi", function (result) {
        function viewModel() {            
            return ko.mapping.fromJS(result);
        };
        ko.applyBindings(new viewModel());
    })
    .error(function () { alert("error"); });
</script>

JSON对象:

[
    {
        "TelemCalls": [ {"ID": 1, "duratio": "11"}],
        "ID": 1,
        "FirstName": "Jonas",
        "LastName": "Jonaitis",
        "Phone": "860123123",
        "Municipality": null
    }
]

如何在 razor 页面中访问和显示映射的JSON数据?

2 个答案:

答案 0 :(得分:0)

你是否有从json对象映射的viewModel并绑定到整个razor视图。 要在剃刀视图中显示值,只需创建绑定到viewModel的html元素,如下所示:

<input type="text" data-bind="value: ID" />
<input type="text" data-bind="value: FirstName" />
<input type="text" data-bind="value: LastName" />
<input type="text" data-bind="value: Phone" />
<input type="text" data-bind="value: Municipality" />

小提琴中的例子:http://jsfiddle.net/vfportero/hcVmZ/

答案 1 :(得分:0)

请记住,您的映射数据只能在JavaScript中访问,而不是在服务器端访问,而Razor正在构建页面。因此,要在页面上显示viewModel的属性值,请尝试以下操作:

<input data-bind="value: FirstName" />
<ul data-bind="foreach: TelemCalls">
    <li data-bind="text: duratio"></li>
</ul>

如果您的顶级viewmodel是一个数组,请使用以下语法:

<div data-bind="$data">
    <input data-bind="value: FirstName" />
    <ul data-bind="foreach: TelemCalls">
        <li data-bind="text: duratio"></li>
    </ul>
</div>