如何在带有对象参数的嵌入式渲染子操作中正确使用MVC5 OutputCache?

问题描述

我有一个父页面,需要通过传递对象(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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...