asp.net-mvc - 告诉操作/ Controller 保留 TempData

标签 asp.net-mvc attributes persistence tempdata

据我了解,TempData 设计为仅在单个页面请求之间工作。但我认为有一种情况破坏了预期的功能。

我优先使用 Controller 而不是处理程序来传递图像。我现在不知道这是否是最佳实践,但它对我来说非常有效。但问题是,对图像操作之一的每次调用显然都会耗尽 TempData 积分。

MVC 中有没有办法说“此 Controller /操作超出了正常页面请求的范围”,因此要么保留 TempData,要么将其自身完全从 TempData 生命周期中删除?

丰富

最佳答案

我的解决方案是创建一个在页面请求之间保留 TempData 的属性。我对此的最初 react 是“恶心”,但我想有效地从 TempData 生命周期中排除任何用该属性修饰的 Controller 。

using System.Web.Mvc;

namespace K3R.Web.Mvc.Filters {
    public sealed class PersistTempDataAttribute : ActionFilterAttribute {
        public PersistTempDataAttribute() { }

        public override void OnActionExecuting(ActionExecutingContext filterContext) {
            var tempData = filterContext.Controller.TempData;
            if (tempData == null || tempData.Count == 0)
                return;

            string[] keys = new string[tempData.Keys.Count];
            tempData.Keys.CopyTo(keys, 0);
            foreach (var key in keys)
                tempData[key] = tempData[key];
        }
    }
}

任何有关更好解决方案的反馈将不胜感激。

丰富

关于asp.net-mvc - 告诉操作/ Controller 保留 TempData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666760/

相关文章:

asp.net-mvc - .net mvc2自定义HtmlHelper扩展单元测试

java - 如何在生产环境中为 hibernate.hbm2ddl.auto 使用不同的值

php - 可与 backbone.js 一起使用的 RESTful 持久性解决方案......在 PHP 中?

java - 尝试让简单的 Struts2 w/Hibernate 示例工作时出错

asp.net-mvc - 处理 OAuth 2.0 身份验证 - 在 ASP.NET MVC 应用程序中获取 token 重定向 token 响应

asp.net - 为什么在添加新的响应头时得到 "Platform Not Supported Exception"?

c# - MVC 4 : Create new Razor View from string not from file path

JQuery:类型错误:对象 0 没有方法 'attr'

r - 修改 `citation`中的 `R`对象

Python matplotlib 减小颜色条标签的大小