2011-10-21 7 views
2

私はASP.NET MVC 3 OutputCache属性をテストすることだし、次のように動作がある:ASP.NET MVC 3 OutputCacheをディーププロパティによって異なるようにする方法はありますか?

  • あなたがVaryByParam属性を指定しない場合は、指定した場合、それは自動的にすべてのパラメータ
  • によって異なります"param1、param2"のようなカンマで区切られたものだけで変化します

しかし、あなたのアクションが複雑なパラメータを持っているとしましょう、Personとは、Personのプロパティによって変化させることはできません。私はそれを行うことができます方法はあり、私はそれが何を言っていないか、明示的にmodel.Name

を指定することにより、neighter動作するように作ることができないのは... Person.Name

をしましょうか?

答えて

1

Person.Nameを追加パラメータとして送信することでAPIを少しハックすることもできますし、VaryByCustom属性オプションを使用して独自のリゾルバを提供することもできます。

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

その後、あなたの属性宣言にVaryByCustom="Person"を追加します。後者の場合は、あなたのGlobal.asaxを編集し、GetVaryByCustomStringメソッドをオーバーライドする必要があります。

+0

私はより簡単な解決策を探していました。この場合、私はコアキャッシュパラメータがスカラーであるようにアクションを整理することを好むでしょう。とにかくありがとうございました :) –

関連する問題