0
我试图在我的应用程序中实现树视图。我正在使用MVC2 Preview 1和SubSonic 3 SimpleRepository。我对MVC和Linq都是新手。填充Childnode列表:Linq混淆和关注点分离
我的问题是,我不知道如何将子节点的列表添加到模型记录,我将传递回视图。所以我加了IEnumerable的叫孩子到我的模型类,我填写的控制器动作:
public class Category
{
public Category()
{
}
public int ID { get; set; }
public int? ParentId { get; set; }
[Required(ErrorMessage="Name is required")]
public string Name { get; set; }
[SubSonicIgnore]
public IEnumerable<Category> Children { get; set; }
}
然后在控制器动作,我把所有的记录,并通过更新儿童成员迭代:
public ActionResult Index()
{
var categories = _repo.All<Category>();
foreach (var c in categories)
{
c.Children = from p in _repo.All<Category>()
where p.ParentId == c.ID
orderby p.Name
select p;
}
return View(categories);
}
我的2个问题是#1为什么这不起作用?在循环范围之外,我的更改丢失了。 #2一般来说,这是正确的方法吗?将这段代码放在控制器中感觉就像是黑客。
我不认为你已经清楚什么具体不工作?我同意这个逻辑不应该在控制器中。听起来像存储库应确保模型类正常水合。 – 2009-11-16 22:09:48
通过调试器遍历foreach,我可以看到c.Children被设置。但是,类别的内容不会改变。我的问题是为什么这不起作用? – bq1990 2009-11-17 15:45:12