使用带有JSON请求的输出缓存VaryByParam

时间:2015-04-24 08:16:11

标签: jquery json asp.net-mvc asp.net-mvc-5 outputcache

我有一个控制器操作,它接收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),
  ...
});

1 个答案:

答案 0 :(得分:0)

VaryByCustom是你的朋友!

覆盖VaryByCustom文件中的global.asax.cs方法。这允许您创建自己的检查,因为您可以在此处访问HTTPContext,所以您可以检查邮件正文中的帖子值。

查看this博客,了解如何创建自己的实施。

希望这有帮助