微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在带有对象参数的嵌入式渲染子操作中正确使用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 举报,一经查实,本站将立刻删除。