我对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());
}
此代码非常适合返回单个数据集。我的情况是,我有一个对象列表,每个对象都有一个对象的子集,我想在输出页面的层次结构中显示。我不确定我是在寻找快捷方式还是正确方式,对这两种途径的想法都会非常感激。
谢谢!
答案 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
}
}
%>