Передача результатов запроса в viewbag - PullRequest
5 голосов
/ 21 мая 2011

Кажется, что это должно быть так просто, но я попробовал три или четыре способа сделать это (но безрезультатно).

Я просто пытаюсь поместить результат запроса в пакет просмотраи отобразить его.

Я пытался поместить список объектов модели в ViewBag:

var mesg = from MSG in lemondb.Messages
where MSG.msg == Membership.GetUser().ToString()
select MSG;
ViewBag.messages = MSG;

И затем я пытаюсь выплюнуть его в .cshtml:

var message = (List<LemonTrader.Models.Message>)ViewBag.messages;  // <--- fails here because it is a string
foreach ( var MSG in message )
{
@Html.Label(MSG.msg)<br />
}

Но там написано:

Невозможно преобразовать тип 'System.Data.Entity.Infrastructure.DbQuery' в 'System.Collections.Generic.List'

Похоже, я использую не тот шаблон.Как выложить System.Entity.Infrastructure.DbQuery?

Я также пытался передать результаты через Viewbag в виде списка строк.(Это худший способ сделать это?)

var mesg = from MSG in lemondb.Messages
where MSG.msg == Membership.GetUser().ToString()
select MSG.msg;
ViewBag.messages = mesg;

И выкладывать это в виде списка строк:

foreach (var atext in ViewBag.messages as List<string>) { // gets hung up on foreach here (why???)
    @Html.Label( atext )   
}

И я получаю это:

Ссылка на объект не установлена ​​для экземпляра объекта.

И она указывает на ключевое слово "foreach".

Означает ли это, что сообщений не было?Или что?

Хотелось бы, чтобы был учебник, показывающий, как поместить результаты запроса в ViewBag и как их получить!Я видел учебники, которые возвращают object.ToList () безотносительно к какому-либо механизму «где», но нет примеров, чтобы вытащить несколько релевантных записей и отобразить их.

1 Ответ

6 голосов
/ 21 мая 2011

Попробуйте

ViewBag.messages = MSG.ToList();

Кроме того, System.Data.Entity.Infrastructure.DbQuery реализует IEnumerable (http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbquery(v=vs.103).aspx), поэтому это также должно работать:

var message = (IEnumerable<LemonTrader.Models.Message>)ViewBag.messages;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...