729 Stimmen

RedirectToAction mit Parameter

Ich habe eine Aktion, die ich von einem Anker aus so nenne, Site/Controller/Action/ID donde ID ist ein int .

Später muss ich von einem Controller aus auf dieselbe Aktion umleiten.

Gibt es eine clevere Möglichkeit, dies zu tun? Derzeit lagere ich ID in tempdata, aber wenn Sie f5 drücken, um die Seite erneut zu aktualisieren, sind die tempdata verschwunden und die Seite stürzt ab.

43voto

Rohit Punkte 2699

MVC 4 Beispiel...

Beachten Sie, dass Sie nicht immer einen Parameter namens ID übergeben müssen

var message = model.UserName + " - thanks for taking yourtime to register on our glorious site. ";
return RedirectToAction("ThankYou", "Account", new { whatever = message });

Und,

public ActionResult ThankYou(string whatever) {
        ViewBag.message = whatever;
        return View();
} 

Natürlich können Sie den Modellfeldern auch Strings zuweisen, anstatt ViewBag zu verwenden, wenn Sie das bevorzugen.

31voto

mateuscb Punkte 9050

Wenn es sich bei Ihrem Parameter um ein komplexes Objekt handelt, dies löst das Problem . Der Schlüssel ist die RouteValueDictionary Konstrukteur.

return RedirectToAction("Action", new RouteValueDictionary(Model))

Wenn Sie zufällig Sammlungen haben, wird es ein bisschen schwieriger, aber diese andere Antwort deckt dies sehr gut ab .

30voto

Zaeem Q Punkte 445
RedirectToAction("Action", "Controller" ,new { id });

Hat bei mir funktioniert, musste ich nicht tun new{id = id}

Ich leitete innerhalb desselben Controllers um, so dass ich die "Controller" aber ich bin mir nicht sicher, welche Logik dahinter steckt, wenn der Controller als Parameter erforderlich ist.

24voto

aslanpayi Punkte 715
....

int parameter=Convert.ToInt32(Session["Id"].ToString());

....

return RedirectToAction("ActionName", new { Id = parameter });

21voto

Toriq Sagor Punkte 199

Wenn man eine Fehlermeldung anzeigen möchte für [httppost] dann kann er/sie versuchen, durch Übergabe einer ID mit

return RedirectToAction("LogIn", "Security", new { @errorId = 1 });

für Details wie diese

 public ActionResult LogIn(int? errorId)
        {
            if (errorId > 0)
            {
                ViewBag.Error = "UserName Or Password Invalid !";
            }
            return View();
        }

[Httppost]
public ActionResult LogIn(FormCollection form)
        {
            string user= form["UserId"];
            string password = form["Password"];
            if (user == "admin" && password == "123")
            {
               return RedirectToAction("Index", "Admin");
            }
            else
            {
                return RedirectToAction("LogIn", "Security", new { @errorId = 1 });
            }
}

Ich hoffe, es funktioniert gut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X