C # MVC3 - LINQ выбор и цикл foreach в Razor, что мне не хватает? - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть следующее действие в контроллере:

public ViewResult Index()
{        
    //select
    var query = (from u in db.UserSets
                 join f in db.FriendRequestsSets on u.ID equals f.FriendID
                 orderby u.ID
                 select new {Id = u.ID, Nickname = u.Nickname}).AsEnumerable();

    ViewBag.FriendRequests = query;
    return View(this.UserColl());
}

В моем представлении Razor следующий foreach:

<ul>
@foreach (var item in ViewBag.FriendRequests)
{
    <li>@item.Nickname</li>
}
</ul>

И следующая ошибка:

*'object' does not contain a definition for 'Nickname'*

Чего мне не хватает в моем коде?

1 Ответ

6 голосов
/ 13 сентября 2011

ViewBag имеет тип объекта, а не Enumerable!

То, что вы можете сделать, - это создать следующий класс:

Class User{
  public int Id;
  public string Nickname;
  }

, а затем заполнить список класса User следующим образом:

var query = (from u in db.UserSets
             join f in db.FriendRequestsSets on u.ID equals f.FriendID
             orderby u.ID
             select new User{Id = u.ID, Nickname = u.Nickname}).ToList();

и, наконец, на ваш взгляд, сделайте следующее:

    @foreach (var item in ViewBag.FriendRequests as List<User> )
    {
      <li>@item.Nickname</li>
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...