Asp.net mvc 4 敲除不在mvc视图中显示数据

Asp.net mvc 4 敲除不在mvc视图中显示数据,asp.net-mvc-4,knockout.js,Asp.net Mvc 4,Knockout.js,我正在MVC4Web应用程序中使用knockout。当控制器方法返回数据时,Knockout不会呈现任何数据。控制台中也没有错误。 视图中的属性名称也与模型类中的属性名称相匹配 [HttpGet] public JsonResult GetUsers() { using (UsersContext context = new UsersContext()) { return Json(context.UserProf

我正在MVC4Web应用程序中使用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>

我认为你应该改变这两件事:

1) 脚本应该在domready上运行

$(function(){
   //your script here
});
3) 最后,

 ko.applyBindings(usersViewModel);
第二个参数应该是应用绑定的DOM元素,即:

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

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

显示您的
UserProfile
类。将ajax函数从您的users()函数中排除-。并进行一些调试,比如控制台日志,在foreach中,尝试首先使用text:$data。在执行第1点中指定的操作之后,代码开始工作。谢谢
 ko.applyBindings(usersViewModel, $('table-selector')[0]);