我有一个控制器操作,它接收Person
类型参数。该参数使用基于JSON的模型绑定功能从JSON请求绑定。
我的VaryByParam
在这种情况下不起作用,因为请求不包含任何“经典”变量(例如GET或POST),但在这种情况下数据在HTTP正文中。在客户端,我使用KnockoutJS
,因此我使用ko.toJSON
方法发布数据。
如何根据JSON请求中的字段值实现输出缓存?
该示例仅用于演示。
// model
public class Person {
public int PersonID { get; set; }
public string Name { get; set; }
}
// action
[OutputCaching(Duration = 60, VaryByParam = "PersonID")]
public JsonResult Process(Person person) {
...
}
// client-side
$.post({
url: '/mycontroller/myaction',
...
data: ko.toJSON(personViewModel),
...
});
答案 0 :(得分:0)
VaryByCustom
是你的朋友!
覆盖VaryByCustom
文件中的global.asax.cs
方法。这允许您创建自己的检查,因为您可以在此处访问HTTPContext,所以您可以检查邮件正文中的帖子值。
查看this博客,了解如何创建自己的实施。
希望这有帮助