【发布时间】:2016-12-17 16:19:27
【问题描述】:
我想将通知保存在TempData 并显示给用户。我为此创建了扩展方法并实现了一个从ActionResult 扩展的类。我需要使用ActionContext 在override ExecuteResult 方法中访问TempData。
扩展方法:
public static IActionResult WithSuccess(this ActionResult result, string message)
{
return new AlertDecoratorResult(result, "alert-success", message);
}
扩展 ActionResult 类。
public class AlertDecoratorResult : ActionResult
{
public ActionResult InnerResult { get; set; }
public string AlertClass { get; set; }
public string Message { get; set; }
public AlertDecoratorResult(ActionResult innerResult, string alertClass, string message)
{
InnerResult = innerResult;
AlertClass = alertClass;
Message = message;
}
public override void ExecuteResult(ActionContext context)
{
ITempDataDictionary tempData = context.HttpContext.RequestServices.GetService(typeof(ITempDataDictionary)) as ITempDataDictionary;
var alerts = tempData.GetAlert();
alerts.Add(new Alert(AlertClass, Message));
InnerResult.ExecuteResult(context);
}
}
从控制器调用扩展方法
return RedirectToAction("Index").WithSuccess("Category Created!");
我得到 'TempData' null ,如何在 'ExecuteResult' 方法中访问 'TempData'。
【问题讨论】:
标签: asp.net-core-mvc actionresult