jQuery:如何遍历/迭代对象列表

5

我将使用asp.net MVC4进行web应用程序开发。

我想要遍历来自ViewModel的对象列表。

以下是该对象的类:

public class User
{
        public int Id {get; set;}
        public string Name {get; set;}
        public string Address {get; set;}
        public string Department {get; set;}
}

以下是我的ViewModel类:
public class UserViewModel
{
      public List<User> AllUsers {get; set;}
      public bool IsDeleted {get; set;}
}

正如在UserViewModel类中所见,我有一个User类型对象列表。AllUsers列表中的每个用户对象都需要使用Jquery迭代并从中获取数据。为此,我尝试执行以下操作:
$(@Model.AllUsers).each( function(){ .... });

我尝试使用上述方法进行不同的组合,但是没有成功。有人能为此提出解决方案吗?
提前感谢您的帮助。

你遇到了什么错误?你是否尝试过像这样使用 $.each() 函数:$.each(@Model.AllUsers, function() {}); - SzybkiSasza
@supercool:如果我使用那种方法,我就无法访问循环外的任何变量。在我的情况下,我需要执行一些条件检查。 - Zax
是吗?我相信你可以访问$.each或者@foreach,它们都是做同样的事情。如果你想要访问外部变量,你可以通过@符号来轻松访问它们,比如在循环中使用@if(@status == false) - super cool
你是否已经声明了变量,例如 @{bool status = true} - super cool
让我们在聊天中继续这个讨论 - Zax
显示剩余3条评论
4个回答

14

使用以下代码将您的集合分配给JavaScript变量:

var users = @Html.Raw(Json.Encode(Model.AllUsers))

然后您可以对其进行迭代

$.each(users, function(index, item) {
  // access the properties of each user
  var id = item.Id;
  var name = item.Name;
  ....
});

谢谢你的回答。你能详细说明一下遍历部分吗?特别是针对上面的User类。 - Zax
1
仅使用 Html.Raw() 是不行的吗?需要使用 Json.Encode 吗? - Ehsan Sajjad
@StephenMuecke:在JSON.parse上我遇到了以下异常:检测到一个循环引用,该引用是在序列化类型为'System.Data.Entity.DynamicProxies.User_D02A520B40433C88E2D653B140881AE8C121BC55EC122BCB5567A8B08366EA2A'的对象时发现的。 - Zax
这意味着 typeof User 将包含一个属性 User - 但这不是你问题中的代码所表明的吗? - user3559349

3
<script type="text/javascript">

    var UsersList = @Html.Raw(Json.Encode(Model.AllUsers))

    for (var i = 0; i < UsersList.length; i++) {
        alert(UsersList[i].Id);
        alert(UsersList[i].Name);

    } 
 </script>

0

JavaScript通常不喜欢Razor组件,但如果上述内容是CSHTML文件的一部分,则可以正常工作。

其他方法包括:

  1. 使用razor @foreach ... 显示集合
  2. 将集合作为参数从网页传递到某个事件的JavaScript函数中

您是如何调用此函数的?它是做什么用的?


0

在我的情况下,我用以下方法修复:

 @for(int i=0;i<Model.AllUsers.Count;i++)
 {
   @: var name = '@Html.Raw(@Model.AllUsers[i].Name)';
   @:alert(name);
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接