Reputation: 3010
I'm using asp.net MVC4 for web app development.
I would like to traverse a list of objects from a ViewModel.
Below is the class of the object:
public class User
{
public int Id {get; set;}
public string Name {get; set;}
public string Address {get; set;}
public string Department {get; set;}
}
Below is my ViewModel
class:
public class UserViewModel
{
public List<User> AllUsers {get; set;}
public bool IsDeleted {get; set;}
}
As seen in the UserViewModel
class, I have a list of objects of type User
. Now i would like to iterate through each of the user object in AllUsers
list using Jquery
and fetch data from them.
In order to do so, I tried doing something like the following:
$(@Model.AllUsers).each( function(){ .... });
I have tried different combination using the above approach, but couldn't succeed. Can anyone suggest a solution for the same.
Thanks in advance.
Upvotes: 5
Views: 12442
Reputation: 81
In My Case, I fixed by this way :
@for(int i=0;i<Model.AllUsers.Count;i++)
{
@: var name = '@Html.Raw(@Model.AllUsers[i].Name)';
@:alert(name);
}
Upvotes: 0
Reputation:
Assign your collection to a javascript variable using
var users = @Html.Raw(Json.Encode(Model.AllUsers))
which you can then iterate over
$.each(users, function(index, item) {
// access the properties of each user
var id = item.Id;
var name = item.Name;
....
});
Upvotes: 14
Reputation: 5550
JavaScript generally is unhappy with razor components although if the above is part of an CSHTML file it will work.
The other approaches are:
@foreach ...
How are you calling this function and what does it do?
Upvotes: 0
Reputation: 3019
<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>
Upvotes: 3