有没有办法使ASP.NET MVC 3 OutputCache因深度属性而异?
我正在测试ASP.NET MVC 3有没有办法使ASP.NET MVC 3 OutputCache因深度属性而异?,.net,asp.net-mvc,caching,.net,Asp.net Mvc,Caching,我正在测试ASP.NET MVC 3OutputCache属性,其行为如下: 如果不指定VaryByParam属性,它将根据所有参数自动变化 如果您指定,它将仅与用逗号分隔的值不同,如“param1,param2” 但是如果你的动作有一个复杂的参数,比如说,一个人,我不能让它随人的属性而变化。比如说。。人名 我不能通过什么都不说或显式指定model.Name来让它工作得更好 有什么方法可以做到这一点吗?您可以通过发送Person.Name作为附加参数(只是为了缓存),稍微修改一下API,或者
OutputCache
属性,其行为如下:
- 如果不指定VaryByParam属性,它将根据所有参数自动变化
- 如果您指定,它将仅与用逗号分隔的值不同,如“param1,param2”
有什么方法可以做到这一点吗?您可以通过发送
Person.Name
作为附加参数(只是为了缓存),稍微修改一下API,或者使用属性选项并提供自己的解析器。在第二种情况下,您需要编辑您的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”
添加到属性声明中。我正在寻找一个更简单的解决方案。在这种情况下,我更愿意以这样一种方式来安排操作,即核心缓存参数是标量的。无论如何,谢谢你:)