ASP.NET MVC - areas, manejo de estado

19
Areas en ASP.NET MVC, Manejo de Estado Danae Aguilar Guzmán MCT, MS, MCTS, MCP [email protected]

Transcript of ASP.NET MVC - areas, manejo de estado

Page 1: ASP.NET MVC - areas, manejo de estado

Areas en ASP.NET MVC, Manejo de Estado

Danae Aguilar Guzmán MCT, MS, MCTS, MCP

[email protected]

Page 2: ASP.NET MVC - areas, manejo de estado

Areas

Areas

• Si la aplicación se hace grande, es mas complicado manejar la estructura de archivos.

• Las Areas nos permiten organizar diferentes módulos de una aplicación Web basados en su funcionalidad.

• Permiten tener la estructura de MVC para cada módulo

Page 3: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

1. Click derecho en el proyecto Add > Area

2. Ingresar un nombre y aceptar.

3. Se creara una carpeta con la estructuraMVC:

AreaRegistration

Estructura MVC

Page 4: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

3.1. Se creará un archivo AreaRegistration:

Define la estrategia de enrutado para el area

public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Catalogo_default", "Catalogo/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); }

Page 5: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

3.2. Se registran las areas en el archivoGlobal.asax, en el método Application_Start:

protected void Application_Start() { AreaRegistration.RegisterAllAreas();

Page 6: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

4. Crear controllers y vistas

5. Agregar el espacio de nombres del controller principal en el archivo RouteConfig:

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "EjemploAreas.Controllers" } );

Page 7: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

6. Agregando enlaces a las areas:

<li>@Html.ActionLink("Ver Catalogo",

"Index",

"Home",

new { area="Catalogo"},

null)

</li>

Page 8: ASP.NET MVC - areas, manejo de estado

Areas

Creando Areas

6.1. Pasando datos en el enlace:

<li>@Html.ActionLink("Ver Catalogo",

"Index",

"Home",

new { area="Catalogo",

Usurio = "Juanito" },

null)

</li>

Page 9: ASP.NET MVC - areas, manejo de estado

Areas

Usando layout en Areas

Necesitamos copiar al web config externo, los datos del web.config que esta en la carpetashared: <configSections>

<sectionGroup name="system.web……. <section name="host" type="System……. <section name="pages" type="System.Web……. </sectionGroup> <section name="entityFramework" type="System……. </configSections> <system.web.webPages.razor> <host factoryType="System……. <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor>

Page 10: ASP.NET MVC - areas, manejo de estado

Manejo de estado

HTTP es un protocolo sin estado Cada request implica volver a crear todas las

instancias de nuestra página.

Podemos mantener estado:1.Del lado del server:

Application state, Session state

2. Del lado del Cliente: Cookie state, Query Strings

3. Entre peticiones: Cross-page posting, Items collection

Page 11: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Los datos se guardan en el servidor

Mas seguro

Evita el envió de datos en cada petición

Application state permite guardar datos globales para toda la aplicación

× Consume memoria del servidor

× Puede reducir el performance y escalabilidad de la aplicación

Page 12: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Application State

Estado compartido por todos los usuarios de la aplicación

Usar cuando obtener un valor que se requiere siempre, consume demasiado en obtenerlo para cada petición.

Se perderán los datos si en server se reinicia o detiene.

Page 13: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Application State

Se almacena en una instancia de HttpApplicationState

Accedemos por la propiedad Application

HttpContext.Current.Application["Nombre"] = "Pepe";

Page 14: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Application State

Para actualizar Application debemos ponerun bloqueo

Application.Lock(); Application["clicks"] = ((int)Application["clicks"]) + 1; Application.UnLock();

Page 15: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Session State

Son datos específicos para cada usuario

Los datos se pierden si la sesión del usuario termina.

Se almacena en el servidor, pero puede configurarse para almacenarse en cookies, en otro state server o en una Base de Datos

Page 16: ASP.NET MVC - areas, manejo de estado

Manejo de Sesiones y aplicación

Session State

Accedemos mediante la propiedad Session

if (Session["ultimaVisita"] != null) { Label1.Text = ((DateTime)Session["ultimaVisita"]).ToString(); } else { Label1.Text = "Ultima visita es desconocida"; } Session["ultimaVisita"] = DateTime.Now;

Page 17: ASP.NET MVC - areas, manejo de estado

Cookies

Se almacenan en el cliente

Se pueden mantener en archivos disponibles en el tiempo en distintas peticiones desde la misma máquina.

No se mantiene si el usuario se conecta desde otra máquina o dispositivo

Los usuarios pueden eliminar los cookies en cualquier momento

Page 18: ASP.NET MVC - areas, manejo de estado

Cookies

Crear un Cookie:

Acceder a un Cookie:

Cuando expira un Cookie:

Response.Cookies.Add(new HttpCookie("userId", userId));

var id = Request.Cookies["userId"].Value;

Response.Cookies["lastVisit"].Expires = DateTime.Now.AddDays(1);

Page 19: ASP.NET MVC - areas, manejo de estado

QueryString

Se pasan en el url:

http://www.miSitio.com/test.aspx?nombre=juanito&edad=21

Acceder al valor:

Label1.Text = Request["nombre"];