Übergeben Sie eine variable aus [HttpPost] Methode [HttpGet] - Methode
Bin ich umleiten der Ansicht von [HttpPost] Methode [HttpGet] - Methode. Ich habe es zu arbeiten, aber wollen wissen, ob dies der beste Weg, dies zu tun.
Hier ist mein code:
[HttpPost]
public ActionResult SubmitStudent()
{
StudentViewModel model = TempData["model"] as StudentResponseViewModel;
TempData["id"] = model.Id;
TempData["name"] = model.Name;
return RedirectToAction("DisplayStudent");
}
[HttpGet]
public ActionResult DisplayStudent()
{
ViewData["id"] = TempData["id"];
ViewData["name"] = TempData["name"];
return View();
}
Anzeigen:
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage"
%>
<html>
<head runat="server">
<title>DisplayStudent</title>
</head>
<body>
<div>
<%= ViewData["id"]%> <br />
<%= ViewData["name"]%>
</div>
</body>
</html>
InformationsquelleAutor user793468 | 2011-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich gibt es 3 Techniken in ASP.NET MVC zu implementieren, die PRG-Muster.
Mit
TempData
ist in der Tat ein Weg der Weitergabe von Informationen für eine einzige Umleitung. Den Nachteil sehe ich bei diesem Ansatz ist, dass, wenn der Benutzer trifft die F5-Taste auf der letzten Seite umgeleitet wird er nicht mehr in der Lage sein, um die Daten abzurufen, wie es entfernt vonTempData
für nachfolgende Anforderungen:Anderen Ansatz, wenn Sie nicht viele Daten zu senden, schicken Sie diese als query-string-Parameter, wie diese:
Noch ein anderer Ansatz und meiner Meinung nach das beste besteht in anhaltenden dieses Modell in einigen datenspeicher (wie eine Datenbank oder etwas, und dann, wenn Sie umleiten möchten, um die Aktion zu ERHALTEN senden Sie nur eine id ermöglicht es, Holen Sie sich das Modell aus, wo bleibst du). Hier ist das Muster:
Jede Methode hat Ihre vor-und Nachteile. Entscheiden Sie, welche am besten zu Ihrem Szenario.
Lee, Umleitung auf eine Aktion eingerichtet, die mit der
[HttpPost]
- Attribut?Nein, definitiv nicht. Redirect auf eine Standard-Index-Aktion gibt eine Liste von Studenten. Ich aktualisiert meine Antwort unten, um zu zeigen, was ich meine.
InformationsquelleAutor Darin Dimitrov
Wenn Sie das einfügen dieser Daten in eine Datenbank, dann sollten Sie leiten Sie Sie auf eine controller-Aktion, hat diese Daten in der route:
Anschließend können Sie code schreiben, der in der Steuerung zum abrufen der Daten aus der Datenbank für die Anzeige:
InformationsquelleAutor Dismissile
Einer der überschreibt der
RedirectToAction()
so aussieht:Können Sie diese benutzen als:
Hoffe, dass das funktioniert.
InformationsquelleAutor sTodorov
Dies ist die klassische Post-Redirect-Get Muster (PRG) und es sieht gut aus aber ich möchte hinzufügen, ein bisschen code. In der DisplayStudent Methode prüfen Sie, ob Ihr TempData Variablen nicht null, sonst geschieht ein redirect auf einige Standard-Index-Aktion. Im Falle, dass ein Benutzer drückt die Taste F5 um die Seite zu aktualisieren.
InformationsquelleAutor Daniel Lee