这是因为RedirectToAction
向浏览器返回 HTTP 302 响应,导致浏览器向指定的操作发出GET请求。由于HTTP 是无状态的,因此您不能简单地在一个操作中设置某些内容并在另一个操作中获取它(当它是另一个 GET 请求时)。
你能做的是
1)将查询字符串传递给您的新操作,并在下一个操作方法中检查它并据此显示一条消息。
return RedirectToAction("ThankYou","Account",new {msg="success"});
在你的ThankYou行动中
public ActionResult ThankYou(string msg)
{
var vm=YourSuccessViewModel();
if(msg="success") // you may do a null checking before accessing this value
{
vm.Message="Saved Successfully";
}
return View(vm);
}
2)存储在 Session / TempData 等临时位置。TempData 是一个非常短暂的实例,您应该只在当前和后续请求期间使用它!
TempData["UserMsg"] = "Saved Successfully";
return RedirectToAction("ThankYou","Account");
在您的ThankYou
操作中,您可以阅读它并根据需要向用户展示。
public ActionResult ThankYou(string msg)
{
var msg = TempData["UserMsg"] as string;
//to do : do what you want with the message and return the view.
}
Session 对象是 TempData 对象的后备存储,它比常规会话更快地被销毁,即在后续请求之后立即销毁。