这看起来应该很容易,但我尝试了三四种方法(但没有成功)。
我只是想将查询结果放入视图袋中并显示它。
我尝试将模型对象列表放入 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 />
}
但它说:
无法转换类型
'系统.数据.实体.基础设施.DbQuery'
到
'系统.集合.通用.列表'
所以看来我使用了错误的模板。如何吐出 System.Entity.Infrastruct.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() 的教程,而不考虑任何类型的“where”机制,但没有示例来提取一些相关条目并显示它们。
Try
ViewBag.messages = MSG.ToList();
此外,System.Data.Entity.Infrastruct.DbQuery 实现 IEnumerable (http://msdn.microsoft.com/en-us/library/system.data.entity.infrastruct.dbquery(v=vs.103).aspx http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbquery(v=vs.103).aspx)所以这也应该有效:
var message = (IEnumerable<LemonTrader.Models.Message>)ViewBag.messages;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)