Displaying content under an ID
我已经学习了很长一段时间的英孚和LINQ,我很难在我试图完成的过程中找到答案:
在索引视图中,我想要一个包含所有CD及其各自内容的列表。更多信息请参见以下课程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Cd { public int cdID { get; set; } public string cdName { get; set; } public string tag { get; set; } public Content Content { get; set; } } public class Content { public int contentID { get; set; } public string contentName { get; set; } public string category { get; set; } } |
对于这些类,我如何才能实现我尝试做的事情——使用CDID显示CD下的所有CD内容?
更新1-最终答案(感谢Dryadwoods)
1 2 3 4 5 6 7 | public class Cd { public int cdID { get; set; } public string cdName { get; set; } public string tag { get; set; } public IList<Content> Content { get; set; } //Changes here! No changes in Content class } |
视图的最终版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @model IEnumerable<MediaManager.Models.Cd> <table> <tr> <th>CD ID</th> <th>Content</th> </tr> @foreach (var cd in Model) //nested loop for displaying the cdID, then proceeds to loop on all contents under certain cdID { <tr> <td> @Html.DisplayFor(modelItem => cd.cdID) </td> <td> @foreach (var item in cd.Content) { <p> @item.contentName </p> } </td> </tr> } </table> |
一个简单的例子是,有一个页面可以显示所有CD和每个CD的内容。
控制器:
1 2 3 | public ViewResult Index(){ return View(db.Cd.Include(x=>x.Content).ToList()); } |
观点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @model IEnumerable<YourNamespace.Cd> @foreach (var cd in Model) { <tr> <td> @Html.DisplayFor(modelItem => user.UserName) .... etc ... </td> <td> @foreach (var c in cd.Content ) { @c.contentName .... etc ... } </td> </tr> } |
更新第1号
将类更改为:
1 2 3 4 5 6 7 | public class Cd { public int cdID { get; set; } public string cdName { get; set; } public string tag { get; set; } public IList<Content> Contents { get; set; } } |
现在您有了一个"目录"列表:()