как передать коллекцию в частичное представление MVC 2? - PullRequest
2 голосов
/ 06 мая 2010

как передать коллекцию в частичное представление MVC 2? Я видел пример, где они использовали синтаксис;

<% Html.RenderPartial("QuestionPartial", question); %>

это передает только ОДИН объект вопроса ..

что делать, если я хочу передать несколько вопросов в частичное представление и, скажем, я хочу перечислить их.

Как бы я ответил на НЕСКОЛЬКО вопросов?

Ответы [ 3 ]

1 голос
/ 06 мая 2010

Поскольку ваше частичное представление обычно размещается в каком-либо другом (основном) представлении, вам следует строго ввести основной вид в составной объект ViewData, который выглядит примерно так:

public class MyViewData
{
    public string Interviewee { get; set }
    // Other fields here...
    public Question[] questions { get; set }
}

В вашем контроллере:

var viewData = new MyViewData;
// Populate viewData object with data here.

return View(myViewData);

и по вашему мнению:

<% Html.RenderPartial("QuestionPartial", Model.questions); %>

Тогда используйте совет tvanfosson в частичном представлении.

0 голосов
/ 06 мая 2010

Как правило, в вашей модели представления у вас будет IEnumerable<Question> как свойство - в действительности это может быть список или массив объектов Question.Чтобы использовать его в своей части, просто передайте это свойство модели представления в качестве модели частичной части.Часть должна быть строго напечатана, чтобы принять IEnumerable<Question> в качестве модели.

 <% Html.RenderPartial("QuestionPartial", Model.Questions ); %>

Частичное:

<%@ Page Language="C#"
         MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Question>>" %>
0 голосов
/ 06 мая 2010

Вместо прохождения question, почему бы не передать набор вопросов, например List<QuestionType>?

...