Вы можете поместить эту логику в ActionFilter, что означает, что вместо добавления приведенного выше кода к каждому из ваших методов Action в вашем контроллере вы можете просто украсить метод Action с помощью пользовательского фильтра. Или, если он применяется ко всем методам Action в контроллере, вы можете применить атрибут ко всему контроллеру.
Ваш ActionFilter будет выглядеть примерно так:
public class MyExpirePageActionFilterAttribute : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
filterContext.HttpContext.Response.Expires = -1;
filterContext.HttpContext.Response.Cache.SetNoServerCaching();
filterContext.HttpContext.Response.Cache.SetAllowResponseInBrowserHistory(false);
filterContext.HttpContext.Response.CacheControl = "no-cache";
filterContext.HttpContext.Response.Cache.SetNoStore();
}
}
См. эту статью для получения дополнительной информации.
Если вы хотите это для всех действий всего приложения, вы можете применить ActionFilter ко всем действиям, используя глобальный ActionFilter, настроенный в вашем Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalFilters.Filters.Add(new MyExpirePageActionFilterAttribute());
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}