Есть ли способ заставить ASP.NET MVC 3 OutputCache различаться по глубоким свойствам? - PullRequest
2 голосов
/ 21 октября 2011

Я тестирую атрибут ASP.NET MVC 3 OutputCache, и его поведение выглядит следующим образом:

  • Если вы не укажете атрибут VaryByParam, он будет автоматически изменяться всеми параметрами
  • Если вы укажете, он будет меняться только на те, которые разделены запятыми, как "param1, param2"

Но если в вашем действии есть сложный параметр, скажем, Person, яне может сделать это, чтобы изменить свойство личности.Допустим, .. Person.Name

Я не могу заставить его работать как сосед, ничего не сказав или явно указав модель. Имя

Есть ли способ, которым я могу это сделать?

1 Ответ

1 голос
/ 21 октября 2011

Вы можете либо немного взломать API, отправив Person.Name в качестве дополнительного параметра (просто для кеширования), либо вы можете использовать опцию атрибута VaryByCustom и предоставить свой собственный преобразователь. Во втором случае вам нужно отредактировать Global.asax и переопределить метод GetVaryByCustomString:

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if(custom == "Person")
    {
        // extract Person.Name here and return it
    }
    return String.Empty;
}

Затем добавьте VaryByCustom="Person" к объявлению вашего атрибута.

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