使用选项卡式部分视图的ASP.Net MVC3主/细节

时间:2012-06-14 17:56:49

标签: asp.net asp.net-mvc-3 partial-views master-detail

我正在针对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键功能。

提前致谢。

1 个答案:

答案 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