gpt4 book ai didi

asp.net-mvc - 在 MVC 3 中渲染复杂 View

转载 作者:行者123 更新时间:2023-12-04 06:09:35 26 4
gpt4 key购买 nike

我有一个包含三个表的数据库:A、B 和 C。

我希望 View 以特定方式呈现数据。循环遍历 A,然后在 A 下列出 B 的行,其中 B.aID = A.ID,在 B 的每一行下列出 C 的每一行,其中 C.bId = B.ID。

我是 ASP.NET MVC3 的新手,我不确定如何实现这一点。我见过的所有例子都是直截了当的。

最佳答案

我将从添加三个模型开始:A、B 和 C。在这些模型中,A 包含 B 的列表,B 包含 C 的列表。出于测试目的,我还会添加一些东西来唯一标识它们,例如名称。例子:

public class A
{
public string Name { get; set; }

public List<B> Bs { get; set; }
}

public class B
{
public string Name { get; set; }

public List<C> Cs { get; set; }
}

public class C
{
public string Name { get; set; }
}

在我的 Controller 中,我将添加一个用数据填充这些模型的操作方法。出于测试目的,我使用的是虚拟数据。
public ActionResult List()
{
C c1 = new C() { Name = "C1" };
C c2 = new C() { Name = "C2" };
C c3 = new C() { Name = "C3" };
C c4 = new C() { Name = "C4" };

B b1 = new B() { Name = "B1", Cs = new List<C>() { c1, c3 } };
B b2 = new B() { Name = "B2", Cs = new List<C>() { c2, c4 } };
B b3 = new B() { Name = "B3", Cs = new List<C>() { c1, c2, c4 } };
B b4 = new B() { Name = "B4", Cs = new List<C>() { c1, c2, c3, c4 } };

A a1 = new A() { Name = "A1", Bs = new List<B>() { b1, b2 } };
A a2 = new A() { Name = "A2", Bs = new List<B>() { b3, b4 } };
A a3 = new A() { Name = "A3", Bs = new List<B>() { b1, b2, b3, b4 } };

List<A> listOfAs = new List<A>() { a1, a2, a3 };
return View(listOfAs);
}

对于最后一块,显示所有这些的 View 。简单地以嵌套方式使用 @foreach 就可以满足我们的需求:
@model IEnumerable<HelloMvc.Models.A>

<h2>List of As</h2>

<table>
<tr>
<th></th>
</tr>

@foreach (var a in Model) {
<tr>
<td>
@a.Name<br />
@foreach (var b in a.Bs) {
@b.Name<br />

foreach (var c in b.Cs)
{
@c.Name<br />
}
}

</td>
</tr>
}

请注意,“HelloMvc”是我的命名空间。您可能需要将其更改为您自己的命名空间。

把所有东西放在一起,这会产生一个带有嵌套 B 和 C 的 A 列表:
A1
B1
C1
C3
B2
C2
C4
A2
B3
C1
C2
C4
B4
C1
C2
C3
C4
A3
B1
C1
C3
B2
C2
C4
B3
C1
C2
C4
B4
C1
C2
C3
C4

(你必须想象一些样式。)希望这个例子对你有帮助。

(边注)
有趣的是,第三个 foreach 前面没有“@”。这不是打字错误或错误,如果我把它放在那里,则会引发异常。我怀疑 Razor View 引擎中的小错误。

关于asp.net-mvc - 在 MVC 3 中渲染复杂 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com