返回ASP.NET MVC中的多个列表(C#)

时间:2009-01-27 20:58:46

标签: c# asp.net-mvc

我对ASP.NET MVC架构有些陌生,我正在尝试理清如何将多组数据返回到视图中。

    public ActionResult Index(string SortBy)
    {
        var actions = from a in dbActions.Actions
                       orderby a.action_name
                       ascending
                       select a;
        return View(actions.ToList());
    }

此代码非常适合返回单个数据集。我的情况是,我有一个对象列表,每个对象都有一个对象的子集,我想在输出页面的层次结构中显示。我不确定我是在寻找快捷方式还是正确方式,对这两种途径的想法都会非常感激。

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以将它们传递给ViewData,这是一个从控制器传递到视图的对象。控制器看起来像这样:

ViewData["ActionList"] = actions.ToList();

在视图中检索它:

<% foreach (var action in (List)ViewData["ActionList"]) %>

答案 1 :(得分:1)

如上所述的ViewData是快捷方式。但我相信将列表包装在单个对象模型中更有意义,然后将其传递给View。你也会得到intellisense ......

答案 2 :(得分:0)

对象的子集可以/应该由Action上的属性返回(假设db.Actions返回Action对象)。

public class Action 
{

    //...

    public IEnumerable<SubAction> SubActions 
    {
         get { return do-what-ever; }
    }

    //...
}

这里没有什么特别的MVC'......

在您的视图中,您只需遍历两者:

<%
   foreach (Action a in ViewData.Model as IList<Action>) 
   {
       foreach (SubAction sa in a.SubActions)
       {
          // do whatever
       }
   }
%>