2011-02-04 3 views
3

При реализации действия asynchronous controller в ASP.NET MVC, если я хочу вывести кеш ActionResult, в каком методе я ставлю атрибут OutputCache?AsyncController OutputCache

public class PortalController : AsyncController { 
    /// HERE...? 
    [OutputCache(Duration = 60 * 30 /* 30min */, VaryByParam = "city")] 
    public void NewsAsync(string city) { 

     AsyncManager.OutstandingOperations.Increment(); 
     NewsService newsService = new NewsService(); 
     newsService.GetHeadlinesCompleted += (sender, e) => 
     { 
      AsyncManager.Parameters["headlines"] = e.Value; 
      AsyncManager.OutstandingOperations.Decrement(); 
     }; 
     newsService.GetHeadlinesAsync(city); 
    } 

    /// ...OR HERE? 
    [OutputCache(Duration = 60 * 30 /* 30min */, VaryByParam = "city")] 
    public ActionResult NewsCompleted(string[] headlines) { 
     return View("News", new ViewStringModel 
     { 
      NewsHeadlines = headlines 
     }); 
    } 
} 

Сначала я предположил, что он будет идти на NewsCompleted, потому что это метод, который возвращает ActionResult.

Тогда я понял, что NewsAsync связан с VaryByParam, поэтому, вероятно, имеет смысл поместить атрибут в этот метод.

ответ

6

Параметр OutputCache содержит метод void NewsAsync, а не метод ActionResult NewsCompleted. (определяется экспериментами)

 Смежные вопросы

  • Нет связанных вопросов^_^