我有一个接收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),
...
});发布于 2015-04-24 16:31:10
VaryByCustom是你的朋友!
覆盖global.asax.cs文件中的VaryByCustom方法。这允许您创建自己的检查,并且由于您可以在此处访问HTTPContext,因此您将能够检查消息正文中的POST值。
请查看this博客,其中解释了如何创建自己的实现。
希望这能有所帮助
https://stackoverflow.com/questions/29842143
复制相似问题