My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
FrontController  
Implementación de la web con FrontController
Updated Feb 4, 2010 by pepeluxx

Introduction

Con el ejemplo de Santi queda claro el funcionamiento pero lo resumo aquí:

Details

Tenemos 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

Powered by Google Project Hosting