138

ViewBagリダイレクトを呼び出す前に設定することはできますか?

私は次のようなものが欲しい:

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

5 に答える 5

270

リダイレクトを使用する場合は、使用しないでくださいViewBagTempData

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();
}
于 2013-01-24T09:23:51.717 に答える
15

この状況では、TempData を使用できます。 ViewBag、ViewData、TempData について説明します。

于 2013-01-24T09:24:08.233 に答える
12

私はこれが好きでした..そしてそれは私のために働いています...ここで私はパスワードを変更しています.成功すると、成功メッセージをビューバッグに設定してビューに表示します..

    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);
    }
于 2016-02-18T13:21:51.697 に答える
3

ここから撮影

概要

ViewData および ViewBag オブジェクトを使用すると、モデルに付随する余分なデータにアクセスできますが、より複雑なデータの場合は、ViewModel に移動できます。一方、TempData は、特に HTTP リダイレクトでデータを操作するように調整されているため、TempData を使用するときは注意してください。

于 2016-05-10T08:05:32.500 に答える
-3

または、代わりに Session を使用できます。

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

必要なときにいつでも呼び出すことができます。

アップデート

また、@James がコメントで述べたように、不要なジャンク データや古い値を避けるために、使用後にその特定のセッションの値を無効にするかクリアしても安全です。

于 2013-01-24T09:21:57.907 に答える