ASP.NET MVC:从另一个动作中清除动作的缓存

时间:2009-10-28 14:57:14

标签: asp.net-mvc caching

是否可以从其他操作中清除一个操作的缓存?

假设我的索引操作列出了我的所有小部件。有许多小部件,但新的小部件不是经常创建的。所以我想无限期地缓存我的Index操作,但强制它在成功创建后呈现。

public class WidgetController : Controller
{
    [OutputCache(Duration = int.MaxValue, VaryByParam = "none")]
    public ActionResult Index()
    {
        return View(Widget.AllWidgets);
    }

    public ActionResult Create()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(string name)
    {
        Widget widget = new Widget(name);

        // Can I clear Index's cache at this point?
        // ClearCache("Index");

        return View(widget);
    }
}

3 个答案:

答案 0 :(得分:4)

HttpResponse.RemoveOutputCacheItem?

答案 1 :(得分:2)

每当添加新的Widget时,使用VaryByCustom属性使缓存失效。

答案 2 :(得分:0)

恕我直言,如果您调用Create操作,则不会点击缓存,因为您只是渲染视图而不是重定向到已缓存输出的Index操作。