继承的ASP.NET MVC OutputCache不起作用

时间:2015-06-19 12:52:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4 outputcache

您好我正在尝试使用继承基本控制器的OutputCache。但它不起作用,我的代码:

BaseController

 public abstract partial class BasicControllerController : Controller
{

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        if (requestContext == null)
        {
            throw new ArgumentNullException("filterContext");
        }
        base.Initialize(requestContext);
    }
}

控制器

 [OutputCache(Duration=60)]
public class SamplesController : BasicControllerController
{
    public ActionResult AgendamentoEmail()
    {
        return View();
    }
}

查看

@System.DateTime.Now

但只是没有工作。 它只有在我没有继承的情况下才有效,或者我删除了基本控制器下面的代码

public abstract partial class BasicControllerController : Controller
{
    //protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    //{
    //    if (requestContext == null)
    //    {
    //        throw new ArgumentNullException("filterContext");
    //    }
    //    base.Initialize(requestContext);
    //}

}

我想我必须在protected override void Initialize。

中做一些实现

细节:我需要这种方法,因为有些变量使用其他控制器

1 个答案:

答案 0 :(得分:0)

我之前已经处理过这个问题,发现一些现有的属性不能被继承,因为它们是在声明中以这种方式设计的。

我找到的唯一方法是创建一个新属性,扩展您想要使用的属性,但标记为Inherited,喜欢这个:

[AttributeUsage (Inherited = True)]
public class InheritedOutputCacheAttribute : OutputCacheAttribute
{
...
}