我有一個簡單的Category
類來創建自引用表。@ Html.DropdownList顯示類別>>子類別>>子類別作爲文本值
public class Category
{
public int CategoryId{get; set;}
public string Name {get;set;
public int? ParentId {get;set}
public virtual Category Parent {get;set}
public virtual ICollection<Category> Children {get;set;}
}
而由EF生成創建視圖具有超出框區域新的分類名稱:
@Html.LabelFor(model => model.Name, new {@class = "control-label"})
@Html.EditorFor(model => model.Name,"", new{@class="form-control"}
和預填充父類別選擇一個區域
@Html.LabelFor(model => model.ParentId, "Parent Category", new {@class = "control-label"})
@Html.DropdownList("ParentId", null, new {@class ="form-control})
這允許具有多個嵌套子類別和附加子類別嵌套在其他子類別等等的類別...
創建視圖允許您創建新類別並使用@Html.DropdownList
指定父類別,該類別可以拉取所有類別的文本值,但僅列出實際類別或子類別名稱。
有沒有辦法改變@Html.DropdownList
中的顯示值來顯示分層樹而不是單親值?
因此,而不是顯示「AAA電池」的@Html.Dropdownlist
的(新類的父類的值),它顯示的父類的完整層次值:
Electronic Supplies >> Batteries >> AAA Batteries
這當然是一個名爲類別具有「電池」子類別和「AAA電池」子類別的「電子用品」。
沒有什麼可以做到的。我發佈了一篇關於代碼項目[MVC自定義選擇控件](http://www.codeproject.com/Articles/Article/768069/MVC-Custom-Select-Control)的文章,其源代碼顯示了一種可能性。其他選項包括構建類別文本中父類別文本的選項,或者根據父類的選擇(使用jquery和ajax)爲子元素動態構建其他下拉列表。 –
@StephenMuecke謝謝!代碼項目的例子肯定會有所幫助。感謝大家的耐心和幫助,因爲我深入瞭解MVC! – bobbyK12