4.2 KiB
Reglas obligatorias para la ubicación de páginas WebForms
Estas reglas complementan AGENTS.md y aplican a toda página .aspx nueva.
Raíz de páginas
SIG.Web/Pages/es la raíz obligatoria para todas las páginas funcionales nuevas.- No agregar páginas de aplicación directamente dentro de
SIG.Web/Pages/; cada página debe pertenecer a una subcarpeta de módulo. - Usar nombres de carpeta en PascalCase y conservar un solo nombre por módulo.
Estructura inicial:
SIG.Web/
Pages/
Security/
Tramites/
Polizas/
Ejemplos futuros:
Pages/Security/Usuarios.aspx
Pages/Security/Roles.aspx
Pages/Tramites/Solicitudes.aspx
Pages/Tramites/Seguimiento.aspx
Pages/Polizas/PrePolizas.aspx
- Crear nuevas carpetas bajo
Pages/cuando aparezca un módulo real, por ejemploClientes,Fraccionamientos,Ventas,CatalogosoReportes. - No crear carpetas vacías para módulos que todavía no existen, salvo las carpetas iniciales acordadas.
- No colocar páginas de la aplicación dentro de
Metronic,Scripts,Styles,Content,AppCodeni carpetas de paquetes o recursos de terceros. - Los ejemplos
.aspxincluidos dentro de dependencias visuales deMetronicson archivos heredados del proveedor y no cuentan como páginas funcionales de la aplicación. No usarlos como destino para código nuevo.
Únicas páginas permitidas fuera de Pages
Las páginas de aplicación que actualmente están en la raíz son excepciones explícitas y son las únicas que pueden permanecer o existir fuera de Pages/:
AccessDenied.aspx
Inicio.aspx
Login.aspx
Logout.aspx
- No agregar otra página
.aspxen la raíz deSIG.Web. - No mover estas cuatro páginas sin una solicitud explícita, porque sus rutas forman parte del inicio, autenticación y manejo global de acceso.
Login.aspxsigue siendo la única página con estructura HTML completa propia.Inicio.aspxyAccessDenied.aspxusanSite.master.Logout.aspxpuede permanecer como endpoint WebForms sin contenido visual.
Archivos relacionados
- Mantener juntos los tres archivos de cada página:
Pages/Modulo/Pagina.aspx
Pages/Modulo/Pagina.aspx.cs
Pages/Modulo/Pagina.aspx.designer.cs
- Incluir los tres archivos en
SIG.Web.csprojconDependentUponcorrecto. - Usar namespaces que reflejen la carpeta, por ejemplo
SIG.Web.Pages.Security. - El atributo
Inheritsdel.aspxdebe coincidir exactamente con el namespace y la clase del code-behind. - Todas las páginas normales deben usar
MasterPageFile="~/Site.master"y los placeholdersH,CyJ. - Todas las páginas normales deben heredar de
ClsPaginaBase, salvo una excepción global documentada como Login, Logout o AccessDenied.
Rutas y permisos
- Usar rutas virtuales completas, por ejemplo
~/Pages/Security/Usuarios.aspx. - Actualizar menús, módulos, permisos, redirecciones y breadcrumbs con la ruta real de la subcarpeta.
- No depender de rutas relativas como
../para navegación de la aplicación. PermissionServicey los procedimientos de acceso deben comparar la ruta incluyendoPages/Modulo/.- Los enlaces generados deben pasar por
ResolveUrl,VirtualPathUtility.ToAbsoluteo el mecanismo central existente.
Arquitectura
- La ubicación dentro de
Pages/no autoriza acceso directo a SQL. - El code-behind debe permanecer delgado y llamar contratos/servicios.
- Toda operación de base de datos continúa usando procedimientos almacenados mediante repositorios.
- Los modelos, contratos, servicios y repositorios no deben colocarse dentro de
Pages/; permanecen bajo sus carpetas deAppCode.
Excepciones públicas de registro
Además de Login.aspx, las páginas Pages/Security/RegistroCliente.aspx, Pages/Security/RegistroPendiente.aspx y Pages/Security/VerificarCorreo.aspx pueden ser páginas públicas completas con su propio form runat="server". Son las únicas excepciones nuevas; las páginas autenticadas continúan usando Site.master y no declaran form. RegistroCliente.aspx debe manejar el borrador de ambos pasos en ViewState cifrado y no persistir información hasta terminar todas las validaciones. La persistencia final debe usar servicios/repositorios y un procedimiento almacenado transaccional.