【发布时间】:2014-06-16 00:49:44
【问题描述】:
我想知道是否可以在 Razor 语法中使用 Knockout data-bind。
我认为有这段代码:
<tbody data-bind="foreach: relays">
<tr>
<td id="body-button-column">
<button class="btn btn-default btn-sm" title="Remove relay" data-bind="click: $parent.removeRelay">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</td>
<td><input type="text" data-bind="value: $index"/></td>
<td>@Html.DropDownList("RelayConfigurations[" + $index + "].Address", Model.Addresses, "Select an Item")</td>
</tr>
</tbody>
我的视图模型具有以下属性
self.relays = ko.observableArray(@Html.Raw(Json.Encode(Model.RelayConfigurations)));
其中 RelayConfigurations 是模型上的集合对象。
在使用 Razor 语法 @Html.DropDownList.... 的行中,我想对 $index 值使用敲除绑定,但不知道该怎么做。或者,如果有可能的话。
如果我将该行中的 $index 替换为硬编码值零,控制器操作中的模型绑定在 回发 上按预期工作(尽管只是集合中的第一个中继有任何数据,因为硬编码值为零)。
【问题讨论】:
-
我相信你已经知道了,但是,Razor 是一种服务器端技术,而 Knockoutjs 是一种客户端技术。虽然它可以做得很好并且做得很好,但有时您可能最好选择其中一个来实现在页面上显示和捕获数据的最终结果。
-
明白。我选择混合它们的原因是因为继电器配置列表是一个动态大小的列表,用户可以添加和删除。使用 Knockout 可观察数组似乎是在更新 UI 时管理动态大小列表的最简洁和最有效的方法。
标签: c# asp.net-mvc razor knockout.js