c# - 查看包 RuntimeBinderException : 'object' does not contain a definition

标签 c# asp.net asp.net-mvc asp.net-mvc-4

如何通过 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

Simplest Way To Do Dynamic View Models in ASP.NET MVC 3

关于c# - 查看包 RuntimeBinderException : 'object' does not contain a definition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962442/

相关文章:

c# - 如何在 Java 中使用 .Net 程序集

javascript - ASP.NET MVC 5 : Make a select required based on the selected option of another select

c# - 自定义身份验证和 ASP.NET MVC

c# - 在using语句中未使用的局部变量

c# - 列出项目到数据库

c# - 如何在我的项目中引用 TeamFoundation 程序集?

c# - ASP.NET MVC : How to serve content while returning status code 404?

c# - System.Text.StringBuilder.ToString() 处的 System.OutOfMemoryException 与 Excel XML 字符串

c# - 如何将 Model.Tag(具有 ID 和名称)转换为 "List of"名称?

javascript - 从更新面板中调用“window.open”