【问题标题】:ASP.Net MVC Output Caching: The directive or the configuration settings profile must specify the 'varyByParam' attributeASP.Net MVC 输出缓存:指令或配置设置配置文件必须指定“varyByParam”属性
【发布时间】:2008-11-13 22:41:28
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net-mvc outputcache


    【解决方案1】:

    我从来没有找到满意的答案 - 基本上,您只需要添加 VaryByParams 属性,如果您没有任何参数,请将其设置为魔术字符串“none”。

    http://msdn.microsoft.com/en-us/library/system.web.ui.outputcacheparameters.varybyparam.aspx

    【讨论】:

    • 不是空字符串。根据 MSDN,如果不使用任何参数,则 VaryByParam 的值应为“none”:msdn.microsoft.com/en-us/library/…
    • 啊,知道这很有用 - 我想这就是好的 ol' 魔术字符串的问题吧?
    • 疯狂的东西 - 如果你有一个名为 'none' 的 url 参数怎么办?
    • 在哪里指定这个属性以及如何指定?我的代码如下,我得到同样的错误:- [OutputCache(Duration=10)] public String Index(OutputCacheAttribute none) { return DateTime.Now .ToString("T"); }
    • 如果您使用的是 ASP.Net MVC,那么看起来您的操作方法签名无效 - 我相信您应该返回某种 ActionResult(而不是 String您在评论中使用)。此外,您不应该将 OutputCacheAttribute none 作为参数传递 - 它是一个 C# 属性,当您将其添加到方法的开头 ([OutputCache...) 时,您已经在使用它。因此,您的操作方法应如下所示:[OutputCache(Duration=10, VaryByParams="none")] public ActionResult Index() { ... }
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多