Как отобразить данные, переданные из viewbag в контроллер для просмотра - PullRequest
0 голосов
/ 30 мая 2019

Я пытался отобразить, используя цикл @ (foreach var x в viewbag.data2) в представлении

 var data = from c in _context.Posts
                       join p in _context.PostViewCount on c.Id equals p.PostId
                       select new
                       {
                           posts = c,
                           p.Count,
                           c.Title,
                           p.PostId

                       };
            var dat = data.OrderByDescending(x=>x.Count).ToList();
            ViewBag.data2 = dat;

Я получаю недопустимое исключение операции

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вы неправильно поняли синтаксис.

это должно быть:

@foreach(var x in ViewBag.data2){

    @x.Count
    @x.Title

}

Редактировать: Поскольку, кажется, есть небольшая путаница с типами dynamic.В этом примере показано, как использовать определенную модель ..

Создайте класс для ваших данных вместо использования анонимного объекта.

public class PostsModel
{
    public string Title { get; set; }
    public int Count { get; set; }
    // etc...
}

Измените запрос ...

var data = from c in _context.Posts
                   join p in _context.PostViewCount on c.Id equals p.PostId
                   select new PostsModel
                   {
                       Count = p.Count,
                       Title = c.Title,
                       // etc...
                   };
        var dat = data.OrderByDescending(x=>x.Count).ToList();
        ViewBag.data2 = dat;

Затем просто приведите вашу переменную Viewbag к нужному типу ...

@foreach(PostsModel x in ((IEnumerable<PostsModel>)ViewBag.data2)){

    @x.Count
    @x.Title

}

Возможно, вам придется импортировать правильное пространство имен для вашего представления, используя: @using <namespace>

0 голосов
/ 30 мая 2019

Для доступа к viewbag напишите приведенный ниже код в вашем представлении @ ViewBag.data2

Это даст вам данные.

И поместите на него отладчик. Остальное вы поймете.

...