【问题标题】:how do you pass in a collection to an MVC 2 partial view?如何将集合传递给 MVC 2 局部视图?
【发布时间】:2010-05-05 22:15:43
【问题描述】:

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

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

这仅传递一个问题对象..

如果我想将几个问题传递到部分视图中,例如,我想将它们列出来。

我将如何传递几个问题?

【问题讨论】:

  • 嘿,femi,为什么不花几秒钟的时间来接受您其他一些问题的答案。它不会花费很长时间,而且会让人们更倾向于为您提供答案。

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


【解决方案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

【讨论】:

【解决方案2】:

为什么不通过question,而不是通过一系列问题,例如List&lt;QuestionType&gt;

【讨论】:

    【解决方案3】:

    通常,您会在视图模型中拥有一个IEnumerable&lt;Question&gt; 作为属性——实际上它可能是一个列表或问题对象数组。要在您的部分中使用它,只需将视图模型的该属性作为模型传递给部分。部分应该是强类型以接受 IEnumerable&lt;Question&gt; 作为它的模型。

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

    部分:

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

    【讨论】:

      猜你喜欢
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2014-01-14
      • 2013-02-15
      相关资源
      最近更新 更多