在重定向之前设置 Viewbag

有没有可能在调用重定向之前设置 ViewBag

我想要这样的东西:

@ViewBag.Message="MyMessage";
RedirectToAction("MyAction");
89152 次浏览

或者你可以使用 Session 作为替代:

Session["message"] = "MyMessage";
RedirectToAction("MyAction");

然后需要的时候再打电话。

更新

此外,正如@James 在他的评论中所说,在使用特定会话之后,为了避免不必要的垃圾数据或过时的值,可以安全地取消或清除该会话的值。

使用重定向时,不应使用 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 的一些解释。

我喜欢这个. . 它为我工作..。 在这里,我正在改变密码和成功,我想设置成功消息视图袋显示在查看。

    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);
}

从这里带走

摘要

ViewData 和 ViewBag 对象为您提供了访问模型附带的额外数据片段的方法,但是对于更复杂的数据,您可以升级到 ViewModel。另一方面,TempData 专门用于处理 HTTP 重定向上的数据,因此在使用 TempData 时要谨慎。