[c#] 리디렉션 전에 Viewbag 설정

설정할 수 있습니까? ViewBag리디렉션을 호출하기 전에 있습니까?

나는 다음과 같은 것을 원한다.

@ViewBag.Message="MyMessage";
RedirectToAction("MyAction");



답변

리디렉션을 사용할 때는를 사용하지 않아야 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);
    }


답변

여기에서 찍은

요약

ViewData 및 ViewBag 개체는 모델과 함께 제공되는 추가 데이터에 액세스하는 방법을 제공하지만 더 복잡한 데이터의 경우 ViewModel로 이동할 수 있습니다. 반면에 TempData는 HTTP 리디렉션에 대한 데이터 작업을 위해 특별히 설계되었으므로 TempData를 사용할 때는주의해야합니다.


답변

또는 대안으로 Session을 사용할 수 있습니다.

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

그런 다음 필요할 때마다 전화를 겁니다.

최신 정보

또한 @James가 그의 의견에서 말한 것처럼 원하지 않는 정크 데이터 또는 오래된 값을 피하기 위해 사용 후 특정 세션의 값을 무효화하거나 지우는 것이 안전합니다.


답변