Как я могу переопределить OutputCache от basecontroller в действии? - PullRequest
1 голос
/ 30 июля 2010

У меня есть базовый контроллер, который гарантирует, что срок действия страниц истекает, поэтому кнопка «Назад» покажет, что срок действия веб-страницы истек. Это делается так: [OutputCache (NoStore = true, Duration = 0, VaryByParam = "none")]

Однако я хочу иметь поведение по умолчанию, где я могу вернуться назад от одного действия на контроллере, который наследуется от базы. Кажется, что независимо от того, для какого атрибута OutputCache установлено действие, в котором он по-прежнему отображает «Срок действия веб-страницы истек». Любые идеи теперь я могу получить это кешировать на это одно действие?

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Нашли способ обойти это, обрабатывая заголовок nostore без использования атрибутов outputcache

HttpContext.Current.Response.Cache.SetNoStore ();

делает работу ..

0 голосов
/ 25 апреля 2016

Очевидно, вы можете установить атрибут [OutputCache] для метода в производном классе, и это переопределит атрибут в базовом классе.

[OutputCache(NoStore = true, 
             Duration = 0, 
             VaryByParam = "*")]
public abstract class BaseController : Controller
{ 
    // no cache by default
}

public class MyController : BaseController
{
    [OutputCache(NoStore = false, 
                 Duration = 60, 
                 VaryByParam = "searchText", 
                 Location = OutputCacheLocation.Any)]
    public PartialViewResult Test(string searchText)
    {
        // this method cached ok
    }        
}

При тестировании это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...