[英]How to pass tempdata in RedirectToAction in ASP.Net MVC
[英]How to Write Extension Method for RedirectToAction To Set TempData In Mvc?
我想为在 mvc 控制器中调用的 RedirectToAction() 方法编写一个扩展方法。 在这种方法中,我想用我的消息设置TempData并有类似这样的RedirectToAction("Index").WithMessage(message)
我写了这段代码
public static class ActionResultExtension
{
public static IActionResult WithMessage(this IActionResult result,string message)
{
}
}
但问题是我不知道我应该如何访问上下文
有趣的问题:)
最初的解决方案是实现一个自定义的ActionResult
,它会覆盖ExecuteResult
方法来设置TempData
消息。
创建自定义操作结果: `
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 !");
}
希望有所帮助。
感谢这篇文章的作者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.