ASP.NET MVC очистить кеш для частичного просмотра действий - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь очистить кеш для определенной версии моего представления (частичное представление). В основном:

  1. У меня есть Tools контроллер с Test() действием, которое принимает два параметра (код ниже)
  2. Это действие имеет декоратор OutputCache
  3. Другое действие внутри Tools - это ClearCacheItem(), которое, как предполагается, очищает кэш для данного ключа элемента кэша
  4. В некотором представлении (скажем) Index.cshtml Я выполняю рендеринг

Как получить ключ элемента кэша для известной комбинации параметров действия Test ()? Я пробовал, как показано ниже, но это не влияет на элементы кэша, которые я могу проверить:

// get url for action
var url = Url.Action("Test", new { name = ViewBag.Name, ident = ViewBag.Id });
// get url to cache clear action with passing Test() action url as cache item key. I call this url on browser (with no effect - cache not touched). 
var cacheClearAction = Url.Action("ClearCacheItem", new { cachePath = url });

код:

// ToolsController.cs
public class ToolsController 
{
    [OutputCache(Duration = 60 * 60 * 24, VaryByParam = "*")]
    public ActionResult Test(string name, int ident)
    {
        ViewBag.Name = name;
        ViewBag.Id = ident;
        return View();
    }

    public ActionResult ClearCacheItem(string cachePath)
    {
        Response.RemoveOutputCacheItem(cachePath);
        return Content("cache item cleared for: " + cachePath);
    }
}

// Test.cshtml
@{
    Layout = null;
    var url = Url.Action("Test", new { name = ViewBag.Name, ident = ViewBag.Id });
    var cacheClearAction = Url.Action("ClearCacheItem", new { cachePath = url });
}
<!-- CustomModule: @url, cached: @DateTime.Now, cacheClear: @cacheClearAction -->

// Index.cshtml
@Html.Action("Test", "Tools", new { area = "Common", name = "Test1", ident = 1 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...