2012-09-24 34 views
1

我想在HTML助手上使用输出缓存。但是,即使使用属性集,当调用Helper方法时,始终输入此代码块。由于outputcache属性在这种情况下不起作用,因此在Html Helpers中缓存“昂贵”查询的推荐方式是什么?在MVC HTML Helper中缓存“昂贵”查询的推荐方式是什么?

 [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)); 
    } 

回答

0

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

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

细节http://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute(v=vs.108).aspx

使用该attribure不操作方法

正确的示例

[OutputCache(Duration = 50000)] 
public ActionResult CountryDropDownListFor() 
{ 
    // Code 
} 

而且在你看来,你可以使用Html.PartialAction呈现一个

相关问题