您好我正在尝试使用继承基本控制器的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。
中做一些实现细节:我需要这种方法,因为有些变量使用其他控制器
答案 0 :(得分:0)
我之前已经处理过这个问题,发现一些现有的属性不能被继承,因为它们是在声明中以这种方式设计的。
我找到的唯一方法是创建一个新属性,扩展您想要使用的属性,但标记为Inherited,喜欢这个:
[AttributeUsage (Inherited = True)]
public class InheritedOutputCacheAttribute : OutputCacheAttribute
{
...
}