ASP.NET MVC - areas, manejo de estado
-
Upload
danae-aguilar-guzman -
Category
Software
-
view
100 -
download
0
Transcript of 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
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
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 } ); }
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();
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" } );
Areas
Creando Areas
6. Agregando enlaces a las areas:
<li>@Html.ActionLink("Ver Catalogo",
"Index",
"Home",
new { area="Catalogo"},
null)
</li>
Areas
Creando Areas
6.1. Pasando datos en el enlace:
<li>@Html.ActionLink("Ver Catalogo",
"Index",
"Home",
new { area="Catalogo",
Usurio = "Juanito" },
null)
</li>
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>
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
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
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.
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";
Manejo de Sesiones y aplicación
Application State
Para actualizar Application debemos ponerun bloqueo
Application.Lock(); Application["clicks"] = ((int)Application["clicks"]) + 1; Application.UnLock();
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
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;
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
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);
QueryString
Se pasan en el url:
http://www.miSitio.com/test.aspx?nombre=juanito&edad=21
Acceder al valor:
Label1.Text = Request["nombre"];