将Knockout绑定参数从View传递给Controller

时间:2014-04-18 10:40:38

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

我试图在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

1 个答案:

答案 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 - 您需要自己创建链接。