|
FrontController
Implementación de la web con FrontController
IntroductionCon el ejemplo de Santi queda claro el funcionamiento pero lo resumo aquí: DetailsTenemos por cada página 3 ficheros: pagina.ASPX con el diseño pagina.ASPX.CS con el Page_Load y el código asociado a los eventos del ASPX paginaAction.CS es la página que se carga inicialmente y que realiza las conexiones con la BBDD (en nuestro caso a través del remoting y el CP) Para pasar valores de paginaAction.CS a pagina.CS usamos context.Items["valor"] Para que funcione la redirección es necesario retocar el Web.config añadiendo: <configSections> <section name="ActionSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> </configSections> En ActionSettings metemos las páginas a redirigir y el destino: <ActionSettings> <add key="/Panel/InicioAction.aspx.action" value="masterweb.FrontController.InicioAction"/> <add key="/Panel/InicioAction.aspx.success" value="/Panel/Inicio.aspx"/> <add key="/Panel/NuevaNoticiaAction.aspx.action" value="masterweb.FrontController.NuevaNoticiaAction"/> <add key="/Panel/NuevaNoticiaAction.aspx.success" value="/Panel/NuevaNoticia.aspx"/> <add key="/Panel/MisNoticiasAction.aspx.action" value="masterweb.FrontController.MisNoticiasAction"/> <add key="/Panel/MisNoticiasAction.aspx.success" value="/Panel/MisNoticias.aspx"/> <add key="/Panel/ValidacionNoticiasAction.aspx.action" value="masterweb.FrontController.ValidacionNoticiasAction"/> <add key="/Panel/ValidacionNoticiasAction.aspx.success" value="/Panel/ValidacionNoticias.aspx"/> <add key="/Panel/NoticiasPublicadasAction.aspx.action" value="masterweb.FrontController.NoticiasPublicadasAction"/> <add key="/Panel/NoticiasPublicadasAction.aspx.success" value="/Panel/NoticiasPublicadas.aspx"/> <add key="/Panel/CategoriasAction.aspx.action" value="masterweb.FrontController.CategoriasAction"/> <add key="/Panel/ComentariosAction.aspx.success" value="/Panel/Comentarios.aspx"/> <add key="/Panel/ComentariosAction.aspx.action" value="masterweb.FrontController.ComentariosAction"/> <add key="/Panel/CategoriasAction.aspx.success" value="/Panel/Categorias.aspx"/> </ActionSettings> Las ventajas, tal y como comentaba Santi, son que podemos, por ejemplo, programar una Categorias2.aspx.cs y categorias.aspx paralela y una vez acabada, compilada y probada, sustituir la ruta en el Web.config (de categorias.aspx a categorias2.aspx) sin tener que recompilar el proyecto ni dejar la web inoperativa. También es necesario añadir en el httpHandlers: <httpHandlers> <add verb="*" path="*Action*.aspx" type="masterweb.FrontController.FrontControllerHandler"/> </httpHandlers> Esto es para que sepa que páginas debe redirigir ... en este caso las ASPX que contengan la palabra Action. El resto de archivos del App_Code son necesarios para que funcione el FrontController y con copiarlos al proyecto sobra: Command.cs CommandFactory.cs CommandMap.cs CommonPage.cs Forward.cs Handler.cs RedirectingCommand.cs |