gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:40:30 26 4
gpt4 key购买 nike

据我了解,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com