ASP.Net MVC 输出缓存: 指令或配置文件必须指定 'varyByParam' 属性。

14

在为没有输入参数的ActionResult方法应用OutputCache属性后,我遇到了上述错误消息 - 为什么在这种情况下要使用VaryByParams?这是ASP.Net MVC中的bug还是有一种使用OutputCache而不设置此属性的方法?

我的重要问题是,如果我必须使用VaryByParams,在我没有参数可用于缓存时应该输入什么值?

1个回答

26

10
根据MSDN文档,如果不使用任何参数,则VaryByParam的值应为"none",而不是空字符串。链接:http://msdn.microsoft.com/en-us/library/system.web.ui.outputcacheparameters.varybyparam.aspx - bzlm
3
啊,知道这点很有用——我猜这就是好老的魔法字符串的问题,对吧? - Zac Seth
3
疯狂的事情 - 如果您有一个名为“none”的URL参数会怎样? - DavidWainwright
在哪里指定这个属性以及如何指定?我的代码如下,但我仍然得到相同的错误:- [OutputCache(Duration=10)] public String Index(OutputCacheAttribute none) { return DateTime.Now.ToString("T"); } - F11
1
如果您正在使用ASP.Net MVC,则似乎您的操作方法签名无效 - 我认为您应该返回某种ActionResult(而不是您在注释中使用的String)。此外,您不应将OutputCacheAttribute none作为参数传递 - 它是一个C#属性,并且当您将其放置在方法开头时已经在使用它([OutputCache...])。因此,您的操作方法应该像这样:[OutputCache(Duration=10, VaryByParams="none")] public ActionResult Index() { ... } - Zac Seth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接