我正在测试ASP.NET MVC 3 OutputCache
属性,行为如下:
但是如果你的Action有一个复杂的参数,比方说,一个Person,我不能让它因Person的属性而变化。让我们说.. Person.Name
我无法通过说什么或明确指定model.Name
来使其工作更直接我有办法做到吗?
答案 0 :(得分:1)
您可以通过发送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"
添加到您的属性声明中。