- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有谁知道是否可以在代码中取消输出缓存?我的意思是,如果我将输出缓存放在子操作上,如下所示,我可以根据条件从子操作内部取消缓存吗?
[ChildActionOnly]
[OutputCache(Duration = 36000, VaryByParam="tagslug")]
public virtual ActionResult MostViewed(string tagslug, int count)
{
// Make an API call here. If not data returned do not cache the ChildAction as specified above
}
最佳答案
略读 the framework source看起来唯一的逻辑是不缓存异常:
// Only cache output if this wasn't an error
if (!wasException) {
ChildActionCacheInternal.Add(uniqueId, capturedText,
DateTimeOffset.UtcNow.AddSeconds(Duration));
}
我看不出解决这个问题的绝妙方法:我认为您必须根据来自 CodePlex 的 ASP.NET MVC 源的原始源制作自己的自定义 OutputCachingAttribute
,并且然后在该行中为返回的输出添加一个额外的检查,例如
if (!(wasException || capturedText.Contains("results:0"))) {
或类似的,或者找到一种方法将该代码从您的 Controller 传递给它。现有代码使用一个对象来存储 session 上的值;你可以复制这个,例如
_childActionFilterFinishCallbackKey
相同,例如_noCacheResultKey
将公共(public)静态方法添加到您可以调用的属性,例如
public static void FlagNoCache(HttpContext httpContext) {
httpContext.Items[_noCacheResultKey] = true;
}
ClearChildActionFilterFinishCallback
以从 .Items[]
以及回调中删除它扩展上述测试以检查这一点,例如
if (!(wasException
|| filterContext.HttpContext.Items.ContainsKey(_noCacheResultKey))) {
根据需要从您的 Controller 调用 MyOutputCacheAttribute.FlagNoCache(Context);
。
也可以从您的代码中抛出异常,然后在不同的 IExceptionFilter
中捕获它,这样它就不会超出 OutputCacheAttribute
传递,但是我不知道有多抱歉。
关于c# - 取消 ChildAction 中的输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626605/
基本上我在我的应用程序中使用 ActivityGroup。我有这种情况: 我有 Activity A 的 Tabhost。 Activity A 创建 childActivity B。 A --->
有谁知道是否可以在代码中取消输出缓存?我的意思是,如果我将输出缓存放在子操作上,如下所示,我可以根据条件从子操作内部取消缓存吗? [ChildActionOnly] [OutputCache(Dura
我正在尝试在我的应用中实现视频。我想我可以使用 YouTubePlayer API 并打开我的视频。如果我打开一个正常的新 Intent ,这工作正常。 但是,如果我在应用程序底部有一个菜单的 chi
我尝试使用缓存配置文件在我的 mvc 应用程序中缓存子操作,但出现异常:持续时间必须是正数。 我的 web.config 如下所示:
我正在尝试利用 .Net MVC 3 中的 donut 缓存功能。对于我的主页,在我的家庭 Controller 中,我有: public ActionResult Index() { ret
我正在使用一个基本 Activity 作为另一个 Activity “RecicpeActivity”的父 Activity ,因为我已经覆盖了基本 Activity 中的 setContentVie
如何确定当前操作是 ChildAction 还是路由的主要操作?我应该检查 URL 并与操作的名称进行比较吗?这不太好,因为它取决于路由模式...... 或者我应该制作两个同名的 Action ,将
这个问题在这里已经有了答案: Exporting ViewData\ModelState to Child Action (1 个回答) 关闭 9 年前。 我有 post action 有像普通的代
我对子操作进行了相当密集的调用,通过以下方式在几个 View 中简单地调用了大量的 C# 代码: @Html.RenderPartial("mychildAction") 现在,每当调用此操作时,我都
因此,在为我的 MVC3 应用程序寻找强大的安全解决方案后,我遇到了 this blog post通过里克·安德森。它详细介绍了一种 WhiteList 方法,其中将 AuthorizeAttribu
我以为这会很简单,但我设法以某种方式将其解决。如果我想将 URL 参数传递给另一个操作,我是否必须为此创建一个新路由? Controller [ChildActionOnly] public
我在使用 Ninject 和 EntityFramework 的 ASP.NET MVC 3 应用程序中遇到一个奇怪的问题。 我们有一个 ISession 接口(interface),它由 Entit
我是一名优秀的程序员,十分优秀!