在我的HomeController中,我有以下3个查询,请注意第3个查询不是“ToList”,而只是第一个使用的结果。
var model = new AggregateModel();
model.Tasks = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due > dateTime)).ToList();
model.Events = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime)).OrderBy(p => p.Start).ToList();
model.NextEvent = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime)).OrderBy(p => p.Start).First();
在模型文件中,我有以下模型:
public class AggregateModel
{
public List<Task> Tasks { get; set; }
public List<Event> Events { get; set; }
public List<Event> NextEvent { get; set; }
}
我需要将模型文件中的“NextEvent”定义从“public List”更改为其他类型,但我不确定所需的正确术语。
非常感谢您的帮助。
[编辑]
基本上从NextEvent模型中,我想拉出一个结果并在我的视图中显示它,但是下面的foreach下面有一个红线。
@foreach (var item in Model.NextEvent)
{
<li>@Html.ActionLink(item.Title, "Details", new { id = item.EventId })</li>
}
</ul>
答案 0 :(得分:4)
您可能正在寻找
public Event NextEvent {get;set;}
编辑: 广告。第二个'foreach'问题。 Foreach仅用于迭代集合,但NextEvent是单个实体。所以没有什么可以与foreach迭代。您可以像这样访问您的NextEvent:
<li>@Html.ActionLink(Model.NextEvent.Title, "Details", new { id = Model.NextEvent.EventId })</li>
如果你没有在视图中重命名默认模型,那么至少应该有效。
Model
= AggregateModel
Model.NextEvent
= AggregateModel.NextEvent
答案 1 :(得分:1)
删除foreach,将代码更改为&gt;
<li>@Html.ActionLink(Model.NextEvent.Title, "Details", new { id = Model.NextEvent.EventId</li>