AsyncController OutputCache - PullRequest
       12

AsyncController OutputCache

3 голосов
/ 04 февраля 2011

При реализации действия асинхронного контроллера в ASP.NET MVC, если я хочу вывести в кэш ActionResult, каким методом я должен добавить атрибут 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, поэтому, возможно, имеет смысл поместить атрибут в этот метод.

1 Ответ

6 голосов
/ 04 февраля 2011

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

...