J'ai une simple classe Category
pour créer une table auto-référencée.@ Html.DropdownList pour afficher Catégorie >> Sous-catégorie >> Sous-catégorie en tant que valeur de texte
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;}
}
Et créer vue générée par EF a l'extérieur de la zone de la boîte pour le nouveau nom de la catégorie:
@Html.LabelFor(model => model.Name, new {@class = "control-label"})
@Html.EditorFor(model => model.Name,"", new{@class="form-control"}
et une zone qui préremplit la catégorie parente sélection
@Html.LabelFor(model => model.ParentId, "Parent Category", new {@class = "control-label"})
@Html.DropdownList("ParentId", null, new {@class ="form-control})
Ceci permet des catégories avec un nombre de sous-catégories imbriquées et des sous-catégories supplémentaires imbriquées sous d'autres sous-catégories, etc ... etc ...
La vue de création vous permet de créer une nouvelle catégorie et d'attribuer une catégorie parente à l'aide d'un @Html.DropdownList
qui extrait les valeurs de texte de toutes les catégories mais n'indique que la catégorie ou le nom de sous-catégorie réel.
Existe-t-il un moyen de modifier les valeurs d'affichage dans @Html.DropdownList
pour afficher l'arborescence hiérarchique au lieu d'une valeur parent unique?
Ainsi, au lieu de @Html.Dropdownlist
afficher « piles AAA » (la valeur de la catégorie mère de la nouvelle catégorie), il montre la valeur hiérarchique complète de la catégorie parente:
Electronic Supplies >> Batteries >> AAA Batteries
Ceci est bien sûr est une catégorie nommée "Fournitures électroniques" avec une sous-catégorie de "Piles" et une sous-catégorie sous celle de "Piles AAA".
Il n'y a rien hors de la boîte qui fera cela. J'ai posté un article sur Code Project [MVC Custom Select Control] (http://www.codeproject.com/Articles/768069/MVC-Custom-Select-Control) avec le code source montrant une possibilité. Les autres options incluent la construction des options avec le texte de la catégorie parent qui est perpendiculaire au texte de la catégorie, ou la construction dynamique de listes déroulantes supplémentaires pour les éléments enfants basés sur la sélection du parent (jquery et ajax) –
@StephenMuecke thanks! L'exemple du projet de code va certainement aider. J'apprécie la patience et l'aide de tout le monde à mesure que je m'intéresse à MVC! – bobbyK12