2011-02-10 3 views
1

У меня есть представление, которое перечисляет модель.Проблема с IEnumerable в представлении

Вне сетки, которая перечисляет над моделью, я хочу иметь ссылку создать, которая принимает параметр MeetingActionId, который будет связывать ActionUpdate объект с определенным MeetingAction.

Как получить ссылку на создание, чтобы принять это свойство? на данный момент я получаю ошибку

'System.Collections.Generic.IEnumerable' does not contain 
a definition for 'MeetingActionId' and no extension method 'MeetingActionId' 
accepting a first argument of type 
'System.Collections.Generic.IEnumerable' could be found

Я предполагаю, что это что-то делать с IEnumerable. Я собирался решить эту проблему, поставив сетку в частичную, но для меня это похоже на хакерское решение.

Может ли кто-нибудь помочь и, надеюсь, рассказать мне, почему это происходит?

спасибо.

Ниже приведен фрагмент кода, использующий сетку MVCContrib, и T4MVC для строго типизированных ссылок действий.

@model IEnumerable<Actioner.Models.ActionUpdate> 
@using MvcContrib.UI.Grid  

@{ 
    ViewBag.Title = "ListUpdates"; 
} 

<h2>ListUpdates</h2> 
@Html.ActionLink("Add New Update",MVC.ActionUpdates.Create(Model.MeetingActionId)) 


@Html.Grid(Model).Columns(column => { 
    column.For(a=> a.UpdateText); 
    column.For(a=> a.CreatedOn).Format("{0:d}"); 
    column.For(a=>a.CreatedBy); 
}) 

EDIT: Спасибо за вклад ребята. После некоторого размышления я решил, что было бы лучше иметь сетку actionupdates, представленную как частичное представление в представлении «детали» MeetingActions, тем самым полностью избегая этой проблемы.

Этот вопрос может быть закрыт

+1

Что вы пытаетесь сделать? У вас есть представление, которое работает с коллекцией некоторой модели. Вы хотите создать ссылку внутри этого представления. К какому элементу этой коллекции вы хотите сделать эту ссылку? Если вы можете ответить на этот вопрос, вы можете взять этот конкретный экземпляр модели в коллекции и использовать ее в своем шаблоне T4. –

+0

Все еще смущен! Ссылка должна создать новый ActionUpdate. Каждый ActionUpdate принадлежит MeetingAction, поэтому ActionUpdate имеет MeetingActionId, который я хочу передать в действие Action в контроллере ActionUpdate. – MrBliz

ответ

1

Привет Я не уверен, что я понимаю, это правильно, но это кажется, что модель представляет собой список, который содержит элементы типа ActionUpdate, что тип имеет свойство MeetingActionId. Если это так, сама модель не имеет свойства MeetingActionId, которое вы пытаетесь использовать. Может быть, вы могли бы к этому:

Model.First().MeetingActionId

+0

Хорошо, что работает (конечно, с точки зрения компиляции в любом случае :)), но я получаю ошибку времени выполнения: «Sequence не содержит элементов». – MrBliz

+0

Возможно, список (модель) пуста? – Pelle

+2

Было бы нецелесообразно иметь viewmodel, который имеет два свойства: MeetingActionId и IEnumerbale ? По крайней мере, значения nulls/empty не портит все удовольствия – rene

Смежные вопросы