<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Un programador más &#187; asp mvc 2</title>
	<atom:link href="http://www.unprogramadormas.com/tag/asp-mvc-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.unprogramadormas.com</link>
	<description>Experiencias de un programador curioso del SEO</description>
	<lastBuildDate>Mon, 07 Mar 2011 16:54:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Evitar el cache de los navegadores en ASP MVC</title>
		<link>http://www.unprogramadormas.com/11/08/2010/evitar-el-cache-de-los-navegadores-en-asp-mvc/</link>
		<comments>http://www.unprogramadormas.com/11/08/2010/evitar-el-cache-de-los-navegadores-en-asp-mvc/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 14:19:40 +0000</pubDate>
		<dc:creator>jmnieves</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[asp mvc 2]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.unprogramadormas.com/?p=516</guid>
		<description><![CDATA[Cuando desarrollamos nuestras aplicaciones web , muchas veces nos encontramos con un problema con el cual no contabamos la cache del navegador del usuario. Para solventar este problema en ASP MVC contamos con la posibilidad de utilizar ActionFilterAttribute , en este articulo os enseñare a evitar el cache mediante un CustomFilter en ASP MVC. Primero]]></description>
			<content:encoded><![CDATA[<p>Cuando desarrollamos nuestras aplicaciones web , muchas veces nos encontramos con un problema con el cual no contabamos la <a title="Definición de cache en la wikipedia" href="http://es.wikipedia.org/wiki/Cache" target="_blank">cache</a> del navegador del usuario.</p>
<p>Para solventar este problema en <strong>ASP MVC</strong> contamos con la posibilidad de utilizar <a title="ActionFilterAttribute en MSDN" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.aspx" target="_blank">ActionFilterAttribute</a> , en este articulo os enseñare a evitar el cache mediante un CustomFilter en ASP MVC.</p>
<p>Primero de todo crearemos un CustomFilter:</p>
<pre class="brush: csharp; title: ; notranslate">
  public class NoCacheFilter : ActionFilterAttribute
    {

        public override void OnActionExecuting(ActionExecutingContext ActionContext)
        {

            HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
            HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
            HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            HttpContext.Current.Response.Cache.SetNoStore();

        }

    }
</pre>
<p>Como veis sobreescribimos la función <strong>OnActionExecuting</strong> que nos permite captura la llamada al action. En ella definimos la cache del Response de nuestra action en asp mvc.</p>
<p>&lt;h6&gt;Implementación del NoCacheFilter en nuestras actions&lt;/h6&gt;</p>
<pre class="brush: csharp; title: ; notranslate">
[NoCacheFilter()]
 public ActionResult Index()
 {
       return View();
  }
</pre>
<p>Como siempre para vuestra comodidad os dejo el código en <a title="Custom ActionFilter" href="http://pastebin.com/Bg6e6FBs">pastebin</a></p>
<p><strong>Edición</strong>: Añado la versión en VB gracias a FdoGonzález</p>
<pre class="brush: vb; title: ; notranslate">
Public Class NoCacheFilter
Inherits System.Web.Mvc.ActionFilterAttribute

Public Overrides Sub OnActionExecuting(ByVal ActionContext As System.Web.Mvc.ActionExecutingContext)
MyBase.OnActionExecuting(ActionContext)
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1))
HttpContext.Current.Response.Cache.SetValidUntilExpires(False)
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoStore()
End Sub

End Class
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.unprogramadormas.com/11/08/2010/evitar-el-cache-de-los-navegadores-en-asp-mvc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Custom ActionFilter</title>
		<link>http://www.unprogramadormas.com/08/06/2010/custom-actionfilter/</link>
		<comments>http://www.unprogramadormas.com/08/06/2010/custom-actionfilter/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 09:50:42 +0000</pubDate>
		<dc:creator>jmnieves</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[asp mvc 2]]></category>

		<guid isPermaLink="false">http://www.unprogramadormas.com/?p=506</guid>
		<description><![CDATA[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]]></description>
			<content:encoded><![CDATA[<p>Ando liado con un proyecto en <strong>asp mvc 2.0 </strong>y ya sabeis que me gusta compartir lo que voy aprendiendo asi que hoy os voy a proponer aprender a realizar nuestro propio <strong>Custom ActionFilter</strong>. 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.</p>
<h5>Código de nuestro Custom Action Filter</h5>
<pre class="brush: csharp; title: ; notranslate">
   public class OnlyAuthenticatedFilterAttribute : ActionFilterAttribute
    {
        public OnlyAuthenticatedFilterAttribute()
        {

        }

        public override void OnActionExecuting(ActionExecutingContext ActionContext)
        {
                 if (!ActionContext.HttpContext.User.Identity.IsAuthenticated)
                 {
                     string returnUrl = &quot;~/Login/?ReturnUrl=&quot; + HttpContext.Current.Request.RawUrl;
                     ActionContext.HttpContext.Response.Redirect(returnUrl, true);

                 }

        }
}
</pre>
<p>Como veis sobreescribimos la función <strong>OnActionExecuting</strong> que nos permite captura la llamada al action. En ella utilizando el <strong>ActionExecutingContext</strong> comprobamos si el usuario actual esta autenficado y en caso de no estarlo lo redirigimos a una página de login.</p>
<h5>Implementación del Custom Filter en nuestra Action</h5>
<pre class="brush: csharp; title: ; notranslate">
  [OnlyAuthenticatedFilterAttribute()]
   public ActionResult Index()
   {
         return View();
    }
</pre>
<p>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 <a title="Custom ActionFilter" href="http://pastebin.com/LecpS3D8">pastebin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.unprogramadormas.com/08/06/2010/custom-actionfilter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

