0

我正在针对 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 详细信息视图中的不同表中,但这不包括我需要的选项卡功能。

提前致谢。

4

1 回答 1

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>

表B控制器:

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
于 2012-06-20T15:37:13.380 回答