有没有办法让ASP.NET MVC 3 OutputCache因深度属性而异?
问题描述:
我测试了ASP.NET MVC 3 OutputCache
属性和行为如下:有没有办法让ASP.NET MVC 3 OutputCache因深度属性而异?
- 如果不指定VaryByParam属性,它会自动将所有参数变化
- 如果您指定,但那些用逗号状“参数1,参数2”分离只是改变
但是如果你的行动有复杂的参数,比方说,一个人,我不能让它通过人的属性发生变化。比方说.. Person.Name
我不能让说什么或明确指定model.Name
工作neighter有没有办法我能做到这一点?
答
您可以通过发送Person.Name
作为附加参数(仅用于缓存)来破解API,也可以使用VaryByCustom
属性选项并提供您自己的解析器。在第二种情况下,你需要编辑Global.asax
并覆盖GetVaryByCustomString
方法:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if(custom == "Person")
{
// extract Person.Name here and return it
}
return String.Empty;
}
然后加入VaryByCustom="Person"
到您的属性声明。
我正在寻找更直接的解决方案。在这种情况下,我宁愿按照核心缓存参数是标量的方式来安排操作。不管怎样,谢谢你 :) –