我想为mvc控制器中调用的RedirectToAction()方法编写扩展方法。在这个方法中,我想用我的消息设置 TempData ,并有类似 RedirectToAction("索引")。WithMessage(消息)
我写了这段代码
public static class ActionResultExtension
{
public static IActionResult WithMessage(this IActionResult result,string message)
{
}
}
但问题是我不知道应该如何访问上下文
答案 0 :(得分:3)
有趣的问题:)
初始解决方案是实施自定义ActionResult
,它会覆盖ExecuteResult
方法来设置TempData
消息。
创建自定义ActionResult: `
public class RedirectWithConfirmationMessageResult : ActionResult
{
private readonly string message;
public RedirectWithConfirmationMessageResult(ActionResult redirectBaseResult, string message)
{
BaseResult = redirectBaseResult;
this.message = message;
}
public ActionResult BaseResult { get; private set; }
public override void ExecuteResult(ControllerContext context)
{
context.Controller.TempData["Message.Notification"] = this.message;
BaseResult.ExecuteResult(context);
}
}
创建扩展方法
public static class RedirectExtensions
{
public static RedirectWithConfirmationMessageResult WithConfirmation(this RedirectToRouteResult instance, string message)
{
return new RedirectWithConfirmationMessageResult(instance, message);
}
public static RedirectWithConfirmationMessageResult WithConfirmation(this RedirectResult instance, string message)
{
return new RedirectWithConfirmationMessageResult(instance, message);
}
}
<强>用法强>
[HttpGet]
public ActionResult DoSomething()
{
return this
.RedirectToAction("Index", "Home")
.WithConfirmation("Saved Successfully !");
}
希望有所帮助。
致信this帖子的作者。