Skip to main content

Agregar pestañas

Muchas pantallas del backend organizan su contenido en pestañas. En Crono las pestañas se declaran directamente en la vista mediante los tag helpers <barrapestanias> y <pestania>, y para añadir contenido a páginas existentes desde un módulo se usan las zonas de micro‑aplicación (ver Widgets).

Diferencia con el framework de referencia

Smartstore inyecta pestañas escuchando un evento TabStripCreated. Crono no usa ese mecanismo: las pestañas se componen con tag helpers en la vista, y la extensión de páginas ajenas se hace inyectando micro‑aplicaciones en zonas. Este tutorial documenta el enfoque real de Crono.

Declarar pestañas en tu propia vista

Dentro de una vista del módulo (por ejemplo, la de configuración), envuelve el contenido en <barrapestanias> y crea una <pestania> por bloque:

<barrapestanias id="facturacion-configuracion"
cr-estilo-navegacion="Material"
cr-posicion-navegacion="Arriba">

<pestania cr-titulo="@T("Comun.General")" cr-seleccionado="true">
@* ... campos generales ... *@
</pestania>

<pestania cr-titulo="@T("Complementos.Contabilidad.Facturacion.PestaniaConexion")">
@* ... configuración de conexión SUNAT ... *@
</pestania>

<pestania cr-titulo="@T("Complementos.Contabilidad.Facturacion.PestaniaAfectaciones")">
@* ... afectaciones IGV ... *@
</pestania>

</barrapestanias>

Cada <pestania> usa cr-titulo (localizado con @T(...)) y una sola pestaña puede marcarse con cr-seleccionado="true" para abrirse por defecto. La barra admite atributos de estilo como cr-estilo-navegacion y cr-posicion-navegacion.

Añadir contenido a una página existente

Para inyectar interfaz en una página del núcleo sin editar su vista, coloca una micro‑aplicación apuntando a una zona conocida de esa página:

<microaplicacion zona-destino="admin_boton_barraherramienta_antes">
@* botón o fragmento que aparecerá en esa zona de la página anfitriona *@
</microaplicacion>

Las zonas disponibles se publican en /App_Data/zonasmicroaplicacion.json. Si el destino que necesitas es una zona de una barra de pestañas concreta, inyecta ahí el fragmento o el componente de la pestaña adicional. Para contenido dinámico, registra un ViewComponent en la zona en lugar de HTML estático (ver el tutorial de proveedor de widget).

Persistir datos de la pestaña añadida

Si tu pestaña agrega campos que deben guardarse junto a una entidad del núcleo que no controlas, usa los atributos genéricos de esa entidad para almacenar los valores sin alterar su tabla (ver Atributos genéricos):

entidad.AtributosGenericos.Establecer("MiCampo", valor);
await entidad.AtributosGenericos.GuardarCambiosAsync();
tip

Declara los títulos de pestaña como recursos localizados en el recursos.{cultura}.xml del módulo, igual que el resto de textos (ver Localización de módulos).