Model view controller 在MVC HTML助手中缓存“昂贵”查询的推荐方法是什么?

Model view controller 在MVC HTML助手中缓存“昂贵”查询的推荐方法是什么?,model-view-controller,html-helper,outputcache,Model View Controller,Html Helper,Outputcache,我试图在HTML助手上使用输出缓存。但是,即使使用属性集,在调用Helper方法时也始终输入此代码块。既然outputcache属性在这种情况下不起作用,那么在Html帮助程序中缓存昂贵查询的推荐方法是什么 [OutputCache(Duration = 60)] public static MvcHtmlString CountryDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html

我试图在HTML助手上使用输出缓存。但是,即使使用属性集,在调用Helper方法时也始终输入此代码块。既然outputcache属性在这种情况下不起作用,那么在Html帮助程序中缓存昂贵查询的推荐方法是什么

     [OutputCache(Duration = 60)]
     public static MvcHtmlString CountryDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object selectedValue)
    {
        var doc = new XmlDocument();
        doc.Load(HttpContext.Current.Server.MapPath("~/App_Data/countries.xml"));

        var items = new Dictionary<string, string>();

        foreach (XmlNode node in doc.SelectNodes("//country"))
        {
            items.Add(node.InnerText, node.InnerText);
        }

        return html.DropDownListFor(expression, new SelectList(items, "key", "value", selectedValue));
    }

输出缓存允许您将操作方法的输出存储在Web服务器的内存中。例如,如果操作方法呈现视图,则视图页面将被缓存。然后,该缓存页面可供应用程序用于后续请求。输出缓存可以节省应用程序重新创建操作方法结果所需的时间和资源

在ASP.NET MVC中,可以使用OutputCacheAttribute属性标记要缓存其输出的操作方法。如果使用OutputCacheAttribute属性标记控制器,则将缓存控制器中所有操作方法的输出

细节

将此属性用于非操作方法

正确的例子

[OutputCache(Duration = 50000)]
public ActionResult CountryDropDownListFor()
{
   // Code 
}
在您的视图中,您可以使用Html.PartialAction来呈现一个