Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use VaryByParam with multiple parameters?

In ASP.NET MVC2 I use OutputCache and the VaryByParam attribute. I got it working fine with a single parameter, but what is the correct syntax when I have several parameters on the method?

[OutputCache(Duration=30, VaryByParam = "customerId"] public ActionResult Index(int customerId) { //I've got this one under control, since it only has one parameter }  [OutputCache(Duration=30, VaryByParam = "customerId"] public ActionResult Index(int customerId, int languageId) { //What is the correct syntax for VaryByParam now that I have a second parameter? } 

How do I get it to cache the pages using both parameters? Do I enter add the attribute twice? Or write "customerId, languageId" as the value??

like image 895
Frode Lillerud Avatar asked Aug 21 '10 15:08

Frode Lillerud


1 Answers

Valid values for VaryByParam are one of the following:

  • The literal string * (asterisk), which varies by all parameters of the action method.
  • The literal string none (case-insensitive), which varies by no parameters of the action method.
  • A string containing the semicolon-separated names of the parameters you wish to vary by.

In your case, you'd want the first option:

[OutputCache(Duration = 30, VaryByParam = "*")] public ActionResult Index(int customerId, int languageId) { } 

If, however, you had some params you want to vary by and some that you don't, then you'd use the third option:

[OutputCache(Duration = 30, VaryByParam = "customerId;languageId")] // foo is omitted public ActionResult Index(int customerId, int languageId, int foo) { } 

Reference.

like image 96
Kevin LaBranche Avatar answered Sep 25 '22 02:09

Kevin LaBranche