如何通过 ViewBag
将数据传递给 View 来解决这个错误?
An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code
Additional information: 'object' does not contain a definition for 'name'
在 Controller 中
var linq = (from c in db.Catogeries
join a in db.Articals on c.Id equals a.CatogeryId
select new {name=c.Name,title=a.Title });
ViewBag.data = linq;
在 View 中
@{
foreach (var item in ViewBag.data )
{
<p>@item.name</p>
}
}
最佳答案
修复此错误的最简单方法是创建一个类而不是使用匿名对象并使用强类型模型。
var linq = (from c in db.Catogeries
join a in db.Articals on c.Id equals a.CatogeryId
select new MyCategory { name=c.Name, title=a.Title });
ViewBag.data = linq;
在 View
中:
foreach (var item in (IEnumerable<MyCategory>)ViewBag.data )
{
<p>@item.name</p>
}
如果你坚持使用dynamic
,你可以看看这些问题:
Dynamic Anonymous type in Razor causes RuntimeBinderException
关于c# - 查看包 RuntimeBinderException : 'object' does not contain a definition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962442/