Antworten:
Wenn Sie die Umleitung verwenden, müssen Sie nicht verwenden ViewBag, aberTempData
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();
}
In dieser Situation können Sie die TempData verwenden. Hier finden Sie einige Erklärungen für ViewBag, ViewData und TempData.
Das hat mir gefallen ... und es funktioniert für mich ... hier ändere ich das Passwort und möchte bei Erfolg die Erfolgsmeldung auf viewbag setzen, um sie bei der Anzeige anzuzeigen.
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);
}
Zusammenfassung
Mit den ViewData- und ViewBag-Objekten können Sie auf die zusätzlichen Daten zugreifen, die neben Ihrem Modell vorhanden sind. Bei komplexeren Daten können Sie jedoch zum ViewModel wechseln. TempData hingegen ist speziell auf die Arbeit mit Daten zu HTTP-Weiterleitungen ausgerichtet. Seien Sie daher bei der Verwendung von TempData vorsichtig.
Oder Sie können Session als Alternative verwenden:
Session["message"] = "MyMessage";
RedirectToAction("MyAction");
und rufen Sie es dann an, wann immer Sie es brauchen.
AKTUALISIEREN
Wie @James in seinem Kommentar sagte, ist es außerdem sicher, den Wert dieser bestimmten Sitzung nach ihrer Verwendung aufzuheben oder zu löschen, um unerwünschte Junk-Daten oder veraltete Werte zu vermeiden.