这似乎应该是如此简单,但我已经尝试过三种或四种方法来做到这一点(但无济于事)。在查看包中传递查询结果
我只是试图把查询结果放入一个viewbag并显示它。
我已经试过投入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 />
}
但它说:
Cannot convert type 'System.Data.Entity.Infrastructure.DbQuery' to '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)
}
而且我得到这个:
Object reference not set to an instance of an object.
它在点“foreach”关键字。
这是否意味着没有消息?或者是什么?
我希望有一个教程展示如何将查询结果放入ViewBag以及如何将它们取出!我见过的教程返回一个object.ToList()而不考虑任何种类的“where”机制,但没有示例来提取一些相关条目并显示它们。
真棒。谢谢! – micahhoover 2011-05-21 16:17:17
出于某种原因,当我使用这一行:“ViewBag.messages = mesg.ToList();”我得到这个错误:“LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式。” – micahhoover 2011-05-26 07:12:53
我在“选择味精”和“选择MSG.mesg”时看到此错误。当我这样做时也得到这个错误:“ViewBag.messages = mesg.ToString();” (而不是ToList())。 – micahhoover 2011-05-26 07:26:46