Yanıtlar:
Yeniden yönlendirmeyi kullandığınızda ViewBag
, kullanmayacaksınız , ancakTempData
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();
}
Bu durumda TempData'yı kullanabilirsiniz. İşte ViewBag, ViewData ve TempData için bazı açıklamalar.
Bunu beğendim ... ve benim için çalışıyor ... burada şifreyi değiştiriyorum ve başarı üzerine başarı mesajını görünümde görüntülemek için viewbag'e ayarlamak istiyorum ..
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);
}
özet
ViewData ve ViewBag nesneleri, modelinizle birlikte giden bu ekstra veri parçalarına erişmeniz için yollar sağlar, ancak daha karmaşık veriler için ViewModel'e geçebilirsiniz. Öte yandan TempData, özellikle HTTP yönlendirmelerinde verilerle çalışmak için tasarlanmıştır, bu nedenle TempData'yı kullanırken dikkatli olmayı unutmayın.
Veya alternatif için Oturum kullanabilirsiniz:
Session["message"] = "MyMessage";
RedirectToAction("MyAction");
ve sonra ihtiyaç duyduğunuzda arayın.
GÜNCELLEME
Ayrıca @James'in yorumunda söylediği gibi, istenmeyen önemsiz verilerden veya eski değerlerden kaçınmak için o belirli oturumun değerini kullandıktan sonra geçersiz kılmak veya temizlemek güvenli olacaktır.