R. StackUser
R. StackUser

Reputation: 2065

RedirectToAction and pass a value?

If I have a controller action to redirect to another action like so:

public ActionResult Index()
{
    RedirectToAction("Redirected", "Auth", new { data = "test" });
}

public ActionResult Redirected(string data = "")
{
    return View();
}

The URL bar will have something like "Redirected?data=test" in it, which AFAIK is the proper behavior. Is there a way I can pass a variable directly to the Redirected ActionResult without a change on the client?
I'd like to pass "test" directly to the Redirected ActionResult without the URL changing. I'm sure there's a simple way to do this, but it is escaping me. I know I can make a static variable outside the functions that I can pass the variable to and from, but that doesn't seem like a proper solution.

Upvotes: 0

Views: 1930

Answers (3)

Alex
Alex

Reputation: 782

I hope this could help you: https://stackoverflow.com/a/11209320/7424707

In my opinion TempData isn't the most proper solution. If I were you I would look for another solution.

Otherwise, do you really need to call RedirectToAction (to call an action from another controller)? Or are your actions in the same controller for instance?

Upvotes: 0

cortisol
cortisol

Reputation: 363

You can use TempData variable.

public ActionResult Index()
{
    TempData["AfterRedirectVar"] = "Something";
    RedirectToAction("Redirected", "Auth", new { data = "test" });
}

public ActionResult Redirected(string data = "")
{
   string tempVar = TempData["AfterRedirectVar"] as string;
   return View();
}

This link could be helpful.

Upvotes: 3

Erik Philips
Erik Philips

Reputation: 54676

Yes, use TempData.

public ActionResult Index()
{
  TempData["data"] = "test";
  RedirectToAction("Redirected", "Auth"});
}

public ActionResult Redirected()
{
  var data = TempData["data"].ToString();
  return View();
}

Upvotes: 0

Related Questions