我一直在使用此网站上讨论过的匿名类型的ExpandoObject()变通方法。我遇到了一个问题,因为我的视图无法编译。我使用了以下扩展名:
public static ExpandoObject ToExpando(this object anonymousObject)
{
IDictionary<string, object> anonymousDictionary = new RouteValueDictionary(anonymousObject);
IDictionary<string, object> expando = new ExpandoObject();
foreach (var item in anonymousDictionary)
expando.Add(item);
return (ExpandoObject)expando;
}
...允许我执行以下操作:
控制器:
var latestDiscussions = repository.Messages
.OrderByDescending(m => m.DateCreated)
.GroupBy(m => m.Discussion.DiscussionId)
.Take(10)
.Join(repository.Discussions,
m => m.Key,
d => d.DiscussionId,
(m, d) => new
{
Id = m.Key,
Title = d.Title,
Guid = d.Guid,
UrlTitle = d.UrlTitle,
ViewCount = d.ViewCount
}).ToExpando();
查看:
@foreach (var discussion in Model.Latest)
{
<div>
@Html.RouteLink(discussion.Title, "DisplayDiscussion", new { guid = discussion.Guid, urlTitle = discussion.UrlTitle, action = "Display", controller = "Discussion" })
</div>
}
我的模型看起来像这样:
public class IndexModel
{
public IQueryable<Discussion> MostPopular { get; set; }
public ExpandoObject Latest { get; set; }
}
但是,我收到一个编译错误,说是讨论。标题:
编译器错误消息:CS1061:'System.Collections.Generic.KeyValuePair'不包含'Title'的定义,并且没有扩展方法'Title'接受'System.Collections.Generic.KeyValuePair'类型的第一个参数可以找到(你错过了使用指令或汇编引用吗?)
我错过了什么?
提前致谢!
标记