Cómo crear un HTML Helper personalizado para una lista de árbol desplegable en ASP.NET Core 6.
Este es un ejemplo de una lista desplegable en la fuente HTML. Quiero crear un ayudante de HTML para usar la opción general de lista de árbol con la opción de selección.
Por ejemplo, cada nivel solo muestra texto anidado de esta manera: A > A1 > A11.
Mi modelo:
DropdownTreeview{
public long Id { get; set; }
public long? IdParent { get; set; }
public string Name { get; set; }
}
<select class="form-control valid" data-val="true" data-val-required="El campo Categoría superior es obligatorio." id="ParentCategoryId" name="ParentCategoryId" aria-describedby="ParentCategoryId-error" aria-invalid="false">
<option selected="selected" value="0">[None]</option>
<option value="1">Computadoras</option>
<option value="2">Computadoras > Escritorios</option>
<option value="3">Computadoras > Portátiles</option>
<option value="4">Computadoras > Software</option>
<option value="5">Electrónicos</option>
<option value="6">Electrónicos > Cámara foto</option>
<option value="7">Electrónicos > Teléfonos celulares</option>
<option value="8">Electrónicos > Otros</option>
<option value="9">Ropa</option>
<option value="10">Ropa > Zapatos</option>
<option value="11">Ropa > Ropa</option>
<option value="12">Ropa > Ropa > Camisa</option>
<option value="13">Ropa > Ropa > Camiseta</option>
<option value="14">Ropa > Accesorios</option>
<option value="15">Descargas</option>
<option value="16">Libros</option>
<option value="17">Joyería</option>
<option value="18">Tarjetas de regalo</option>
</select>
davy.ai
Para crear un ayudante HTML para una opción de lista de árbol general con opción de selección, puedes usar el siguiente código:
Puedes usar esta función de ayuda en tu vista de la siguiente manera:
Aquí,
TreeViewFor
es un nuevo método de ayuda HTML que toma los siguientes parámetros:expression
: La expresión que proporciona el campo para el cual se está creando la vista de árbol.list
: La lista de elementos que se mostrarán en la vista de árbol.htmlAttributes
: Cualquier atributo HTML que deba aplicarse al elemento select.El ayudante crea una lista desplegable utilizando el método
DropDownListFor
y la rellena con los elementos del parámetrolist
, que es una lista de objetosDropdownTreeview
. El ayudante genera de forma recursiva los elementos para la lista desplegable basándose en sus relaciones padre-hijo.Para mostrar una estructura de árbol anidada, se utiliza el método
GetSelectListItems
. Este método genera de forma recursiva los elementos para la lista desplegable, agregando un prefijo>
a cada texto de los elementos hijos para indicar su jerarquía de padres. El método utiliza objetosSelectListItem
para representar los elementos de la lista desplegable y agrega objetosSelectListGroup
para representar grupos de elementos. Los objetosSelectListItem
se agrupan bajo el grupo correspondiente mediante la configuración de la propiedadGroup
. Por último, el método devuelve los objetosSelectListItem
comoIEnumerable<selectlistitem>
.La lista desplegable resultante mostrará los elementos anidados en un formato de vista de árbol, con los elementos padres mostrados como grupos de opciones y sus elementos hijos correspondientes como opciones anidadas.</tmodel,></tmodel,>