C# NET MVC:如何将列表(从模型中的类)传递到视图中的转发器?

C# NET MVC:如何将列表(从模型中的类)传递到视图中的转发器?,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我如何做上述工作?我已经开始使用MVC,但在传递数据时遇到了问题 我的具体问题是关于模型中的对象列表,我需要在视图中访问这些对象并进行迭代 提前感谢。如果我没有弄错的话,中继器控件需要页面模型。 (经典ASP.NET使用的页面模型) 但是您应该看看这个链接:ASP.NET MVC有几种将数据传递到视图的方法。将模型类传递给视图的主要方法是将其包含在控制器返回的ViewResult类中,如下所示: Function List() As ViewResult ' pass other inf

我如何做上述工作?我已经开始使用MVC,但在传递数据时遇到了问题

我的具体问题是关于模型中的对象列表,我需要在视图中访问这些对象并进行迭代


提前感谢。

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


但是您应该看看这个链接:

ASP.NET MVC有几种将数据传递到视图的方法。将模型类传递给视图的主要方法是将其包含在控制器返回的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 %>
然后,您可以从视图中访问该列表,如下所示:

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")%>


希望能有所帮助。

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

public ActionResult List()
{
    ViewData["MyList"] = new List<string> () {"test1", "test2"};

    return View ();
}
public ActionResult List()
{
ViewData[“MyList”]=新列表(){“test1”、“test2”};
返回视图();
}
然后您可以在视图中访问它

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

假设您的控制器操作看起来像

public ActionResult List()
{
    List<string> myList = database.GetListOfStrings();
    (...)
}
public ActionResult List()
{
List myList=database.GetListOfStrings();
(...)
}
现在要将列表传递给视图,请说“list.aspx”。您可以通过让操作返回ViewResult(ViewResult是ActionResult的子类)来实现这一点。可以使用控制器的View方法返回ViewResult,如下所示:

public ActionResult List()
{
    List<string> myList = database.GetListOfStrings();
    (...)
    return View("List", myList);
}
public ActionResult List()
{
List myList=database.GetListOfStrings();
(...)
返回视图(“列表”,myList);
}
为了能够在视图中以强类型方式访问列表,它必须派生自ViewPage,其中T是要传递的数据类型。因此,在当前情况下,我们的视图(在List.aspx.cs中)是这样的:

public partial class List : ViewPage<string>
{
    (...)
}
公共部分类列表:查看页面
{
(...)
}
以这种方式传递到视图中的数据称为“ViewData”。要访问数据,必须浏览ViewPage上的ViewData.Model属性。因此,要呈现您要编写的列表的内容(在list.aspx中)

这里,this.ViewData.Model具有您在ViewPage中指定的类型参数T,因此在本例中,this.ViewData.Model具有类型列表


您可以使用转发器来渲染这样的内容,但我不推荐这样做。如果您想使用类似的工具,请查看CodePlex上MvcContrib项目的网格模块。

是否有一款名为mvc的microsoft产品?如果是这样的话,我们不应该反对(再次)使用通用词作为产品名称吗?不要让它像“word”、“sql”和“windows”那样往下说,请让你的问题更具描述性,因为:你的实际情况。“我在传递信息时遇到了问题”对回答问题的人没有帮助,对那些将来可能会发现你的问题的人也没有帮助。是的,很抱歉我在标题中使用了ASP.NET MVC,但不是在我的帖子正文中。非常感谢,每个人都很有帮助,但这一个帮助了我,最应该是ViewPage吗?是的,Patrik,应该是的,但我想到了!啊,很抱歉。很高兴你找到了它。@Rune当视图是html文件时,如何使视图从ViewPage扩展?