我试图在MVC中开始使用Knockout并设法使正常的绑定/映射工作, 我想通过使用html.action将Model Id从View传递给Controller,但它传递一个空值,Am使用knockout绑定。 帮我找出错误...
我的观点:
// Foreach loop started
<tbody data-bind="foreach: list">
<tr>
<td data-bind="text: DisplayFlatNumber, click: $parent.rowClick"></td>
<td data-bind="text: DisplayFullName, click: $parent.rowClick"></td>
<td data-bind="text: Flat.MaintainanceCharge, click: $parent.rowClick">0</td>
<td data-bind="text: @Html.Action("DueAmount", "MemberDirectory",
new { id = Model.Id })"></td>
</tr>
</tbody> 'Model.Id is not throwing any data to controller'
//loop end
答案 0 :(得分:2)
你不能像这样使用MVC和淘汰赛 - 看起来你已经让他们都在同一个东西上进行迭代。您有两种选择 - 使用MVC渲染数据,或使用knockout渲染数据。如果你想使用knockout,最简单的方法是让MVC将数据呈现为JSON,并将其作为模型的基础。
e.g。
<script type="text/javascript">
var model = @Html.Raw(JsonConvert.SerializeObject(Model));
function ViewModel(data) {
var self = this;
self.Rows = data;// You could use ko.mapping here if you want observables
}
var vm = new ViewModel(model);
ko.applyBindings(vm);
</script>
这样,您就不会在表格中使用任何MVC html。这意味着您无法使用Html.ActionLink
- 您需要自己创建链接。