2015-06-09 4 views
0

Я использую asp.net MVC4 для разработки веб-приложений.jQuery: Как перемещаться/перебирать по списку объектов

Я хотел бы пересечь список объектов из 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(){ .... }); 

Я пробовал различные комбинации, используя вышеупомянутый подход, но не смог добиться успеха. Может ли кто-нибудь предложить решение для того же самого.

Заранее спасибо.

+0

Какая ошибка у вас? Вы пытались использовать функцию $ .each() 'таким образом:' $ .each (@ Model.AllUsers, function() {}); '? – SzybkiSasza

+0

, если вы хотите сделать обычный цикл @foreach (пользователь var в @ Model.AllUsers) {// try} '. cheers –

+0

Синтаксические ошибки в большинстве случаев – Zax

ответ

5

Назначает свою коллекцию на яваскрипт переменного с помощью

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; 
    .... 
}); 
+0

Спасибо за ответ. Не могли бы вы рассказать об обходной части? Это относится к указанному выше классу пользователей. – Zax

+1

просто 'Html.Raw() 'не будет работать? Для этого нужен Json.Encode? –

+0

См. Edit для доступа к каждому свойству каждого пользователя. –

1
<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 обычно несчастен с компонентами бритвы, хотя, если выше является частью Файл CSHTML будет работать.

Другие подходы:

  1. Отображение коллекции с помощью бритвы @foreach ...
  2. Пропустите коллекцию в качестве параметра от вас веб-страницы в функцию JavaScript на каком-то событии

Как вы звоните эта функция и что она делает?

Смежные вопросы