如何将集合传递给MVC 2局部视图?

时间:2010-05-05 22:15:43

标签: object collections asp.net-mvc-2 asp.net-mvc-partialview

如何将集合传递给MVC 2局部视图?  我看到了一个他们使用语法的例子;

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

这只传递了一个问题对象..

如果我想将几个问题传递到局部视图中,比方说,我想将它们列出来。

我如何传递几个问题?

3 个答案:

答案 0 :(得分:1)

因为您的局部视图通常会放在其他(主)视图中,所以您应该将主视图强烈键入一个看起来像这样的复合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's advice

答案 1 :(得分:0)

为什么不传递一组问题,而不是传递question,而不是List<QuestionType>

答案 2 :(得分:0)

通常,您在视图模型中有IEnumerable<Question>作为属性 - 实际上它可能是一个列表或一组Question对象。要在partial中使用它,只需将视图模型的属性作为模型传递给partial。部分应该是强类型的,以接受IEnumerable<Question>作为它的模型。

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

部分:

<%@ Page Language="C#"
         MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Question>>" %>