gpt4 book ai didi

c# - 如何在Mvc中编写RedirectToAction的扩展方法来设置TempData?

转载 作者:行者123 更新时间:2023-12-02 04:29:01 25 4
gpt4 key购买 nike

我想为在 mvc Controller 中调用的 RedirectToAction() 方法编写一个扩展方法。在这种方法中,我想用我的消息设置 TempData ,并有类似这样的 RedirectToAction("Index").WithMessage(message)

我写了这段代码

    public static class ActionResultExtension
{
public static IActionResult WithMessage(this IActionResult result,string message)
{

}
}

但问题是我不知道如何访问上下文

最佳答案

有趣的问题:)

最初的解决方案是实现一个自定义的 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 的作者发布。

关于c# - 如何在Mvc中编写RedirectToAction的扩展方法来设置TempData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50809306/

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