Experiencias de un programador curioso del SEO
Entradas etiquetadas con 4.0
Custom ActionFilter
8 jun
Ando liado con un proyecto en asp mvc 2.0 y ya sabeis que me gusta compartir lo que voy aprendiendo asi que hoy os voy a proponer aprender a realizar nuestro propio Custom ActionFilter. Un ActionFilter nos permite interceptar la llamada a un action antes de empezar a ejecutar el código de la misma. Esto nos puede servir por ejemplo para reestablecer la cultura de la aplicación o como en el ejemplo que os voy a mostrar forzar a un action de nuestro controlador a ser accesible solo cuando el usuario este autentificado.
Código de nuestro Custom Action Filter
public class OnlyAuthenticatedFilterAttribute : ActionFilterAttribute
{
public OnlyAuthenticatedFilterAttribute()
{
}
public override void OnActionExecuting(ActionExecutingContext ActionContext)
{
if (!ActionContext.HttpContext.User.Identity.IsAuthenticated)
{
string returnUrl = "~/Login/?ReturnUrl=" + HttpContext.Current.Request.RawUrl;
ActionContext.HttpContext.Response.Redirect(returnUrl, true);
}
}
}
Como veis sobreescribimos la función OnActionExecuting que nos permite captura la llamada al action. En ella utilizando el ActionExecutingContext comprobamos si el usuario actual esta autenficado y en caso de no estarlo lo redirigimos a una página de login.
Implementación del Custom Filter en nuestra Action
[OnlyAuthenticatedFilterAttribute()]
public ActionResult Index()
{
return View();
}
Espero que este ejemplo os haya sido claro y os sea útil para vuestros proyectos en asp mvc 2. Como siempre para vuestra comodidad os dejo el código en pastebin
AsParallel usa todos tus nucleos en LINQ
10 may
Hará ya unos dias estuve en la presentación de visual studio 2010 en barcelona y una de las cosas que más me gustarón fue AsParallel() una sencilla función que potencia LINQ al número de nucleos que disponga tu servidor. Es lo que los chicos de Redmond llama PLINQ.
Su implementación es tan sencilla como añadir nuestras sentencias LINQ la función .AsParallel() ejemplo:
IEnumerable<T> data = ...; var q = data.AsParallel().Where(x => x.Id > pId).ToList();
Y aqui acaba el articulo , AsParallel() es tan simple de implementar y sin embargo nos abre el mundo del multithreading en nuestras consultas LINQ.