HTML ヘルパーで出力キャッシュを使用しようとしています。ただし、属性が設定されていても、ヘルパー メソッドが呼び出されると、このコード ブロックが常に入力されます。このシナリオでは 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));
}