【发布时间】:2015-06-10 09:58:21
【问题描述】:
我收到这个奇怪的错误,Razor 会说对象中不存在属性。我觉得我犯了一个愚蠢的错误,但我已经为此奋斗了一段时间,但没有运气。有什么线索吗?
控制器方法:
List<Conversations> lConversations = usr.conversations.OrderBy(o => o.active).ThenByDescending(o => o.updated_at).ToList().Select(i => new Conversations
{
Created = i.created_at, Creator = string.Format("{0} {1}", i.user.first_name, i.user.last_name), Name = i.name, Status = (i.active) ? "Active" : "Deactivated", TotalUsers = i.message_recipient.Count(c => c.active)
}).ToList();
ViewBag.conversations = lConversations;
在视图文件中,我尝试遍历对象并打印出数据。
@foreach (var i in ViewBag.conversations)
{
<tr>
<td>@i.Name</td>
<td>@i.TotalUsers</td>
<td>@i.Creator</td>
<td>@i.Status</td>
<td>@i.Created</td>
</tr>
}
我收到的错误消息是:System.Core.dll 中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的异常,但未在用户代码中处理
附加信息:“对象”不包含“名称”的定义
编辑:对话对象
public class Conversations
{
public string Name { get; set; }
public int TotalUsers { get; set; }
public string Creator { get; set; }
public string Status { get; set; }
public DateTime Created { get; set; }
}
【问题讨论】:
-
我建议你先使用 A Model/ViewModel 而不是 ViewBag
-
stackoverflow.com/questions/12469475/…, stackoverflow.com/questions/7652749/…, stackoverflow.com/questions/21962442/…:您似乎没有显示实际代码。您实际上使用匿名类型还是动态类型?
-
在视图中投射
ViewBag属性 -@foreach (var i in (List<Conversations>)ViewBag.conversations) { ... -
Name属性的可见性如何?请发布Conversion课程代码。 -
我已经按照@ArijitMukherjee 所说的做了,我已经创建了一个模型/视图模型并且已经解决了这个问题。
标签: c# asp.net-mvc razor