我正在针对SQL Server数据库开发我的第一个ASP.Net MVC 3 Web应用程序。我使用Database First从现有数据库创建dbContext和Models。
我正在尝试创建1-M关系的主/详细视图。我有TableA,它与TableB和TableC有关,每个都有1-M关系。但是TableB和TableC并没有直接相关。
当用户从TableA转到记录的详细信息视图时,我希望它在视图顶部显示一个部分,其中包含TableA中列的数据。然后在下面我想有一组选项卡,每个相关表有一个选项卡(TableB和TableC)。例如,当用户点击TableB选项卡时,我想加载一个部分视图,列出TableB中的所有相关记录。
有人可以帮我弄清楚如何实现这个目标吗?我会发布代码,但我不确定从哪里开始。
我做了一些研究并发现了许多讨论ViewModel的帖子,但我不确定这与我的TableA模型有什么不同,后者包括TableB和TableC的相关集合。我还发现了如何将每个关系中的记录加载到TableA Details视图中的不同表中,但这不包括我需要的Tab键功能。
提前致谢。
答案 0 :(得分:0)
我最终为每个子表创建了部分视图,并使用AJAX ActionLink根据选项卡加载部分视图。
TableA视图的一部分(主):
<div>
<nav>
<ul id="menu">
<li>@Ajax.ActionLink("TableB", "TableATableBList", "TableB", New With {.id = Model.TableAID}, New AjaxOptions With {.UpdateTargetId = "partial-div"})</li>
<li>@Ajax.ActionLink("TableC", "TableATableCList", "TableC", New With {.id = Model.TableAID}, New AjaxOptions With {.UpdateTargetId = "partial-div"})</li>
</ul>
</nav>
<section>
<div id="partial-div">
</div>
</section>
</div>
TableB Controller:
Public Class FlightlineController
Inherits System.Web.Mvc.Controller
Private db As MyEntities = New MyEntities
'
' GET: /TableB/
Function Index() As ViewResult
Dim tableBs = db.TableBs.Include(Function(b) b.TableA)
Return View(tableBs.ToList())
End Function
Function TableATableBList(ByVal id As Guid) As PartialViewResult
Dim tableA As TableA = db.TableAs.Find(id)
Return PartialView("TableBList", tableA.TableBs.ToList())
End Function