问题描述
我有一个父页面,需要通过传递对象(childActionClass)来内联呈现子动作(SomeChildAction)。问题在于子操作控制器方法的OutputCache不能将该对象识别为VaryByParam中的参数。
我的推测是,因为这是一个内联操作,所以传递的对象不是“真实的”查询字符串或Post参数,因此VaryByParam永远不会看到它。好的,但是那我该如何改变缓存呢?当前,页面上此子操作的每个实例都会呈现相同的缓存html,这是不正确的。
我的控制器操作看起来像这样
[OutputCache(Duration = 1000,VaryByParam = "*")] //Doesn't work
[ChildActionOnly]
public ActionResult SomeChildAction(childActionClass childObject)
{
var model = new childViewModel();
model.something = doSomething(childObject);
return PartialView("_ChildView",model);
}
我的父视图看起来像这样
@Html.Action("SomeChildAction",new childActionClass { p1 = Model.p1 })
如果我禁用OutputCache,则一切正常。但是我需要启用OutputCache并至少存储1000个。在页面中,这个子操作可能最终有十几个或更多实例,每个实例都有自己的模型和输出,因此需要禁用输出缓存或工作正常。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)