Knockout没有在mvc视图中显示数据

时间:2014-04-07 14:47:46

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

我在MVC 4 Web应用程序中使用knockout。当控制器方法返回数据时,Knockout不会呈现任何数据。控制台也没有错误。 视图中的属性名称也与模型类中的属性名称匹配。

    [HttpGet]
    public JsonResult GetUsers()
    {
        using (UsersContext context = new UsersContext())
        {
            return Json(context.UserProfiles.ToList(),JsonRequestBehavior.AllowGet);
        }

    }

    <script type="text/javascript">

       function users() {

       var vm = this;

       vm.registeredUsers = ko.observableArray();

       $.ajax({
        url: '@Url.Action("GetUsers", "Account")',
        cache: false,
        type: 'GET',
        contentType: 'application/json; charset=utf-8',
        data: {},
        success: function (data) {
          vm.registeredUsers(data);
        }
     });

    }

    var usersViewModel = new users();
    ko.applyBindings(usersViewModel);

  </script>

<tbody data-bind="foreach: registeredUsers">
        <tr>
            <td data-bind="text: UserId"></td>
            <td data-bind="text: UserName"></td>
        </tr>
</tbody>

模型类:

[Table("UserProfile")]
public class UserProfile
{
    public UserProfile();

    [Key]
    public int UserId { get; set; }
    public string UserName { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我相信你应该改变这两件事:

1)脚本应该在domready上运行(即把它放在

中)
$(function(){
   //your script here
});

3)最后,

 ko.applyBindings(usersViewModel);

应该具有应用绑定的DOM元素的第二个参数,即:

 ko.applyBindings(usersViewModel, $('table-selector')[0]);

编辑:看起来这是可选的,如果没有指定dom元素,ko将绑定到整个[document]。