0
我有一個示範課程,組件和子組件:顯示父子關係查看MVC 4
public class Course
{
public virtual int CourseId { get; set; }
public virtual string Name { get; set; }
public virtual List<Component> Components { get; set; }
}
public class Component
{
public virtual int ComponentId { get; set; }
public virtual int CourseId { get; set; }
public virtual string Type { get; set; }
public virtual string Name { get; set; }
public virtual Course Course { get; set; }
public virtual List<Subcomponent> Subcomponents { get; set; }
}
public class Subcomponent
{
public virtual int SubcomponentId { get; set; }
public virtual int ComponentId { get; set; }
public virtual string TypeSub { get; set; }
public virtual string NameSub { get; set; }
public virtual int ParentId { get; set; }
public virtual Subcomponent Parent { get; set; }
public virtual List<Subcomponent> Childs { get; set; }
public virtual Component Component { get; set; }
}
子組件具有父子關係,從而每個子可以有多個subsubcomponents等。我有一個表格來顯示所有組件及其子組件,但是當我到達子組件時,如果我爲該子組件創建子組件,它將獲得相同的級別。當我們如何創建空間或其他子組件的子組件時,可以區分層次結構?我已經搜索並嘗試了很多方法,但沒有爲我工作。我應該爲子組件創建一個局部視圖,然後在主視圖的視圖中調用它? 在視圖中,我有這樣的:
@model SGP.Models.Course
<div>
<table>
<tr>
...
@foreach (var item in Model.Components)
{
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Type)
</td>
...
@if (item.Subcomponents.Count != 0)
{
<table>
...
@foreach (var x in item.Subcomponents)
{
if (x.ParentId == 0) {
<td>
>>
</td>
...
@foreach (var y in x.Childs) {
<td>
(subsubcomponents and subsubsubcomponents and so on stay in this level always)
>>>>
</td>
...
編輯: 控制器:
public ActionResult Planificacao(int id = 0)
{
Course course = db.Courses.Find(id);
if (course == null)
{
return HttpNotFound();
}
return View(course);
}
感謝您的出色答案。它幾乎可以工作,但子組件在子組件層次上不斷重複。我有這個問題,當我在表中的問題,但我解決了它通過添加if(x.ParentId == 0){'在第一次使用子組件之前,我試圖把那裏,如果但沒有工作。我該如何解決這個問題? – dasdasd
可能是你填充你的模型的方式..也許你可以發佈代碼 – JamieD77
我只是直接在數據庫中添加或使用一種方法來添加它們,以任何方式發生該問題。如果有幫助,我爲該視圖添加了控制器 – dasdasd