#asp.net-mvc #asp.net-mvc-3
#asp.net-mvc #asp.net-mvc-3
Вопрос:
В моем HomeController у меня есть следующие 3 запроса, обратите внимание, что третий — это не «ToList», а просто первый используемый результат.
var model = new AggregateModel();
model.Tasks = db.Task.Where(n => (n.UserId == UserID) amp;amp; (n.Completed == false) amp;amp; (n.Due > dateTime)).ToList();
model.Events = db.Events.Where(n => (n.UserId == UserID) amp;amp; (n.Start < dateTime)).OrderBy(p => p.Start).ToList();
model.NextEvent = db.Events.Where(n => (n.UserId == UserID) amp;amp; (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» в файле модели с «общедоступного списка» на другой тип, но я не уверен в правильном необходимом термине.
Большое спасибо за любую помощь.
[ПРАВИТЬ / ПРАВИТЬ код]
В принципе, из модели nextEvent я хочу извлечь один результат и отобразить его в моем представлении, но у следующего есть красная строка под foreach.
@foreach (var item in Model.NextEvent)
{
<li>@Html.ActionLink(item.Title, "Details", new { id = item.EventId })</li>
}
</ul>
Комментарии:
1. хм.. так и должно быть
public Event NextEvent
.. Не так ли?2. Вау, ты продолжаешь публиковать здесь каждый шаг своего процесса разработки, не так ли
Ответ №1:
Вы, вероятно, ищете
public Event NextEvent {get;set;}
Редактировать:
Объявление. второй «предварительный» вопрос. Foreach используется только для перебора коллекций, но nextEvent — это единый объект. Таким образом, нет ничего, что можно было бы повторить с foreach. Вы можете получить доступ к своему следующему событию следующим образом:
<li>@Html.ActionLink(Model.NextEvent.Title, "Details", new { id = Model.NextEvent.EventId })</li>
По крайней мере, это должно сработать, если вы не переименовали модель по умолчанию в представлении.
Model
= AggregateModel
Model.NextEvent
= AggregateModel.nextEvent
Комментарии:
1. Это здорово, за исключением того, что, на мой взгляд, под «@foreach» я получаю красную строку, в которой говорится, что этот тип оператора не может быть выполнен с этим оператором. Есть какая-нибудь причина, почему?
2. @dalehumphries: Вам придется предоставить свой код. Что вы отправляете в этот foreach? Каким образом? Где… Я не понимаю, как это связано с вашим первоначальным вопросом.
3. @dalehumphries: Я добавил решение в свой ответ.
Ответ №2:
удалите foreach, измените код на >
<li>@Html.ActionLink(Model.NextEvent.Title, "Details", new { id = Model.NextEvent.EventId</li>