【问题标题】:Returning Multiple Lists in ASP.NET MVC (C#)在 ASP.NET MVC (C#) 中返回多个列表
【发布时间】:2009-01-27 20:58:46
【问题描述】:

我对 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());
    }

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

谢谢!

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

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

    在视图中检索它:

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

    【讨论】:

      【解决方案2】:

      上面描述的ViewData是快速的方法。但我相信将列表包装在单个对象模型中更有意义,然后将其传递给视图。您还将获得智能感知...

      【讨论】:

      • zsharp,你如何包装它们?
      • 或者我可以使用 ViewBag 吗?我的意思是 ViewBag 而不是 ViewData
      【解决方案3】:

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

      public class Action 
      {
      
          //...
      
          public IEnumerable<SubAction> SubActions 
          {
               get { return do-what-ever; }
          }
      
          //...
      }
      

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

      在您看来,您只需遍历两者:

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

      【讨论】:

        猜你喜欢
        • 2013-02-01
        • 2011-05-10
        • 1970-01-01
        • 2012-06-07
        • 2018-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多