为什么ASP.NET Core CacheTagHelper在路由更改时按路由而不刷新缓存?

时间:2017-03-02 19:03:48

标签: c# asp.net-core asp.net-core-tag-helpers

我已经定义了以下控制器方法,它创建了两个不同的asp.net核心路由(名为route1和route2)。当我使用下面的cshtml时,我希望当我打电话时:

localhost/route1
localhost/route2

我的缓存将被替换,但事实并非如此。

(传入参数{param}不会改变我的预期结果)

控制器页面

    [Route("/route1/{param}", Name = "route1")]
    public IActionResult Route1(string param)
    {
        ViewData["Message"] = "route1.";
        return View("CacheTagHelper/vary-by-route");
    }

    [Route("/route2/{param}", Name = "route2")]
    public IActionResult Route2(string param)
    {
        ViewData["Message"] = "route2.";
        return View("CacheTagHelper/vary-by-route");
    }

查看页面

<Cache vary-by-route="route1,route2">Time Inside Cache Tag Helper : @DateTime.Now</Cache>

2 个答案:

答案 0 :(得分:1)

没有路由值键入route1 / route2。 Aka你的缓存TagHelper应该是:

<div class="classname">all pseudo works</div>

<div id="a">
  <div class="classname">none of the pseudo works</div>
</div>

答案 1 :(得分:0)

我在发布到github repo的旧问题上找到了一个很好的定义。

  

结果的逗号分隔的路径数据参数名称列表   应该改变。路径数据参数值用作部件   缓存条目密钥。

https://github.com/aspnet/Mvc/issues/1552