私の解決策は、ページ リクエスト間で TempData を保持する属性を作成することでした。これに対する私の最初の反応は「うんざり」ですが、属性で装飾されたコントローラーを TempData ライフサイクルから効果的に除外したいと考えています。
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];
}
}
}
より良い解決策に関するフィードバックをいただければ幸いです。
リッチ