Asp.net mvc 4 敲除不在mvc视图中显示数据
我正在MVC4Web应用程序中使用knockout。当控制器方法返回数据时,Knockout不会呈现任何数据。控制台中也没有错误。 视图中的属性名称也与模型类中的属性名称相匹配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
[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]);