首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.NET MVC中使用不可访问形式的缓存

在ASP.NET MVC中使用不可访问形式的缓存
EN

Stack Overflow用户
提问于 2015-05-21 09:15:12
回答 1查看 231关注 0票数 2

我正在使用MVCDonutCaching库进行甜甜圈缓存。

使用此库进行甜甜圈缓存的背景

它的工作方式,是您可以缓存一个视图,但排除它的一部分被缓存,即“甜甜圈洞”。要做到这一点,您可以将无法理解的内容作为部分视图,这是由子操作呈现的。然后在视图中将该子动作称为Html.RenderAction(...。这样,除了那个子动作之外,一切都会被缓存。

问题

我需要缓存一个视图,它包含一个表单。问题是表单包含一个AntiForgeryToken,显然不应该缓存它。

一个明显的解决办法是使它形成一个“甜甜圈洞”,并使它通过一个孩子的行动。但是,它需要复杂的视图模型数据,而子操作只能接受原语类型作为参数,否则就会出现序列化错误。

绕开这条路有什么好办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 18:09:13

找到办法了。不确定它是否是最优的,但它有效。

我把防伪标记本身变成甜甜圈洞,而不是把它做成“甜甜圈洞”。

代码语言:javascript
复制
[ChildActionOnly]                
public virtual ContentResult GetAntiForgeryToken() {
  using (var viewPage = new ViewPage()) {
    var htmlHelper = new HtmlHelper(new ViewContext(), viewPage);
    var token = htmlHelper.AntiForgeryToken();
    return Content(token.ToHtmlString());
  }
}

这需要创建一个虚拟HtmlHelper,然后手动创建令牌。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30369451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档