ASP.NET MVC:如何将列表(从Model中的类)传递到View中的转发器?

我该怎么办? 我已经开始使用MVC了,我遇到了传递数据的问题。

我的具体问题是我在模型中拥有的对象列表,我需要在View中访问并迭代。

提前致谢。

让我们说你的控制器动作看起来像

public ActionResult List() { List myList = database.GetListOfStrings(); (...) } 

现在您要将列表传递给视图,例如“List.aspx”。 您可以通过让操作返回ViewResult来实现此目的(ViewResult是ActionResult的子类)。 您可以使用Controller的View方法返回ViewResult,如下所示:

 public ActionResult List() { List myList = database.GetListOfStrings(); (...) return View("List", myList); } 

为了能够在视图中以强类型方式访问列表,它必须从ViewPage派生,其中T是您传入的数据的类型。因此,在当前情况下我们的视图(在List.aspx中。 cs)会是这样的:

 public partial class List : ViewPage { (...) } 

以这种方式传递到视图中的数据称为“ViewData”。 要访问数据,您必须浏览ViewPage上的ViewData.Model属性。 因此,要渲染列表的内容,您将编写(在List.aspx中)

 
    <% foreach(var s in this.ViewData.Model){ %>
  • <%= s %>
  • <% } %>

这里,this.ViewData.Model具有您在ViewPage中指定类型参数T的类型,因此在我们的示例中this.ViewData.Model具有类型List。

可以使用转发器来渲染这样的东西,但我不推荐它。 如果要使用类似的东西,请查看CodePlex上MvcContrib项目的Grid模块。

快速而肮脏的方式是通过ViewData传递它

 public ActionResult List() { ViewData["MyList"] = new List () {"test1", "test2"}; return View (); } 

然后你可以在你的视图中访问它

 
    <% foreach (string item in (List)ViewData["MyList"]) { %>
  • <%= item %>
  • <% }%>

ASP.NET MVC有几种方法可以将数据传递给View。 将模型类传递给View的主要方法是将它包含在控制器返回的ViewResult类中,如下所示:

 Function List() As ViewResult ' pass other information in the viewdata dictionary ViewData("Title") = "All Items" ' get our item list from the Model classes Dim items = Model.ItemRepository.GetAllItems() ' return as part of result Return View(items) End Function 

然后,从您的视图中,您可以访问该列表,如下所示:

 <% For Each item In ViewData.Model %> <%=item.Name%> <% End If %> 

另一种传递数据的方法是通过ViewData字典,如上面的控制器函数所示。 您可以在视图中访问它,如:

 <%=ViewData("Title")%> 

希望有所帮助。

如果我没有弄错,转发器控件需要页面模型。 (页面模型是经典ASP.NET使用的)

但你应该看看这个链接: http : //haacked.com/archive/2008/05/03/code-based-repeater-for-asp.net-mvc.aspx