MVC3 RedirectToAction in a post method and ViewBag suppression

风流意气都作罢 提交于 2019-11-30 12:31:56
Joshua

You can use TempData to persist information across one request and it was meant for this exact use case. Rather than use the ViewBag use TempData["Error"] = ""; instead. Then, on the receiving end you would have a snippet like the following:

[HttpGet]
public ActionResult List() {
    ViewBag.Error = TempData["Error"];
    // ...
    return View();
}

See ASP.NET TempData persists between requests and When to use ViewBag, ViewData, or TempData in ASP.Net MVC 3.

If you are doing a redirect, try using TempData instead of ViewBag. TempData is a dictionary that preserves keys/values in the user's session until the next page request. In your controller:

TempData["Error"] = "A message goes here";

In your List view that you are redirecting to:

@TempData["Error"]

Or if you are not using razor:

<%= TempData["Error"] %>

Using ViewBag to POST ActionResult:

ActionResult SubmitUser()
{
    ViewBag.Msg =TempData["Msg"];

    return view();
}

[HtttpPost]
ActionResult SubmitUser()
{
    TempData["Msg"] ="Submitted Successfully"];

    return view();
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!