我是mvc新手
关于asp.mvc处理数据库父子关系的方式,我遇到了一个问题
我有三张表"公司"、"会员"one_answers"方法"。我在"公司"one_answers"成员"之间创建了父子关系,在"成员"one_answers"方法"之间创建父/子关系
我正在使用Linq-to-Sql和存储库模式来与我的mssql数据库通信。
在我的家庭控制器中,我有以下操作结果
var memData = _repository.GetCompany(id);
return View(memData);
在我的视图中,我想使用三个部分视图
<% Html.RenderPartial("ShowCompany"); %>
<% Html.RenderPartial("ShowMember"); %>
<% Html.RenderPartial("ShowMethod"); %>
我已经能够创建前两个局部视图,并使用以下代码对每个类属性进行迭代。
foreach(Member m in Model.Members)
foreach(Company c in Model.Company)
因为Members是Company的子级,所以我可以在Model中迭代Members导航属性
但是,我无法访问公司模型中的第三个"方法"表
在Company类的上下文中,我认为尽管"Method"是"Member"的子级,尽管不是"Company"的子代,但导航属性没有在与"Member"类相同的情况下公开?
你能告诉我该怎么办吗
我应该创建一个包含两个属性"Company"one_answers"Method"的自定义视图模型吗
我将如何实现这一点?我想,在我的家庭控制器中,我会有一个额外的方法,以及我的第一个存储库方法,来重新设置"方法"对象
var memData = _repository.GetCompany(id);
var methodData = _repository.GetMethod(id);
如何将这两个对象传递到View()中?
因此需要澄清:
公司(有很多)会员(有许多)方法?
我认为尽管"Method"是"成员"的子级,但不是子级对于"公司"属性不在至于"会员"类?
如果是这种情况,并且您缺少"公司"one_answers"成员"之间的导航属性,则需要创建一个导航属性。假设您使用L2S设计器生成模型,请确保在数据库中定义了关系。
一旦做到这一点,我们就可以向前迈进。
然后你可以这样交互你的收藏:
// model is IEnumerable<Company>
foreach (var company in Model) {
// do something with company
foreach (var member in company.Members) {
// do something with member
foreach (var method in member.Methods) {
// do something with method
}
}
}
我认为您应该能够使用嵌套的foreach循环
foreach (m in model.Members)
{
//do stuff
foreach (method in m.Methods)
{
//do stuff
}
}