在调用重定向之前是否可以设置ViewBag?
我想要像
这样的东西@ViewBag.Message="MyMessage";
RedirectToAction("MyAction");
答案 0 :(得分:220)
使用重定向时,不得使用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();
}
答案 1 :(得分:11)
在这种情况下,您可以使用TempData。 Here是对ViewBag,ViewData和TempData的一些解释。
答案 2 :(得分:8)
我确实喜欢这个..它为我工作...... 在这里我改变了密码并且在成功时我想将成功消息设置为viewbag以在视图上显示..
// Generate a value with an absolute time with an offset of 100ms multipled by value
var source = Rx.Observable.generateWithRelativeTime(
1, // initial value
function (x) { return x < 4; }, // stop predicate
function (x) { return x + 1; }, // iterator
function (x) { return x; }, // value selector
function (x) { return 100 * x; } // time selector
).timeInterval();
答案 3 :(得分:3)
<强>摘要强>
ViewData和ViewBag对象为您提供了访问模型旁边的额外数据的方法,但是对于更复杂的数据,您可以升级到ViewModel。另一方面,TempData专门用于处理HTTP重定向上的数据,因此在使用TempData时请务必小心。
答案 4 :(得分:-2)
或者你可以使用Session替代:
Session["message"] = "MyMessage";
RedirectToAction("MyAction");
然后随时调用它。
<强>更新强>
另外,正如@James在评论中所说的那样,在你使用它之后取消或清除特定会话的价值是安全的,以避免不必要的垃圾数据或过时的价值。