Answers:
使用重定向时,不得使用ViewBag
,而应使用TempData
public ActionResult Action1 () {
TempData["shortMessage"] = "MyMessage";
return RedirectToAction("Action2");
}
public ActionResult Action2 () {
//now I can populate my ViewBag (if I want to) with the TempData["shortMessage"] content
ViewBag.Message = TempData["shortMessage"].ToString();
return View();
}
在这种情况下,您可以使用TempData。 这是有关ViewBag,ViewData和TempData的一些说明。
我确实喜欢这个..及其为我工作...在这里,我正在更改密码,并在成功后要设置成功消息到viewbag以便在视图上显示。
public ActionResult ChangePass()
{
ChangePassword CP = new ChangePassword();
if (TempData["status"] != null)
{
ViewBag.Status = "Success";
TempData.Remove("status");
}
return View(CP);
}
[HttpPost]
public ActionResult ChangePass(ChangePassword obj)
{
if (ModelState.IsValid)
{
int pid = Session.GetDataFromSession<int>("ssnPersonnelID");
PersonnelMaster PM = db.PersonnelMasters.SingleOrDefault(x => x.PersonnelID == pid);
PM.Password = obj.NewPassword;
PM.Mdate = DateTime.Now;
db.SaveChanges();
TempData["status"] = "Success";
return RedirectToAction("ChangePass");
}
return View(obj);
}
或者您可以使用Session作为替代:
Session["message"] = "MyMessage";
RedirectToAction("MyAction");
然后在需要时调用它。
更新
另外,正如@James在他的评论中所说,使用该特定会话后,可以将其无效或清除,以避免不必要的垃圾数据或过时的值。