Also ich habe eine ViewBag.Something
und diese Daten werden zufällig generiert. Aus meiner Sicht habe ich dies auf ein Label wie dieses gesetzt @Html.LabelFor(m => m.Something, (string)ViewBag.Something)
. Das funktioniert gut, aber wenn ich das Formular übergebe, könnte es Fehler geben und wenn es Fehler gibt, brauche ich dieses Label, um gleich zu bleiben. Ich möchte keine dynamischen/zufälligen Daten mehr, also würde ich die Controller-Methode, die generiert wurde, nicht aufrufen dieser ViewBag. Gibt es eine Möglichkeit, diesen Wert beizubehalten, ohne eine private Variable in meinem Controller zu haben? Eine nette Möglichkeit, dass MVC/Razor es tut?Wie können ViewBag-Daten nach einem Formular-Post gespeichert werden?
Antwort
In der get, richten Sie ein Modell, stellen Sie es dynamisch und wenn return view()
ausgeführt wird, tun return view(model)
. Richten Sie dann in der Ansicht ein ausgeblendetes Feld ein, das den erforderlichen Wert weiterreichen kann. Ich habe mich für diesen Weg entschieden, weil ich mir keine Server-Codes zulegen muss, um dies auf einem Post zu erledigen, und ich muss mir keine Gedanken über Sitzungen machen.
Option 1:
Geben Sie den Wert von "ViewBag.Something" an den Controller durch Route Werte mit:
@Html.ActionLink("ButtonText", "ActionName", new { Something = @ViewBag.Something })
Option 2: Sie TempData verwenden können.
public ActionResult Index()
{
var Something = "YOURVALUE";
TempData["Something"] = Something;
.......
}
public ActionResult OtherAction()
{
var Something = TempData["Something "];
...........
}
Passing Zustand zwischen Aktionsmethoden
Aktion Methoden, um Daten an eine andere Aktion passieren könnte, wie zum Beispiel, wenn ein Fehler auftritt, wenn ein Formular geschrieben wird, oder wenn die Methode, um zusätzliche umleiten müssen Methoden, die auftreten können, wenn der Benutzer zu einer Anmeldesicht und dann zurück zur ursprünglichen Aktionsmethode geleitet wird.
Eine Aktionsmethode kann Daten im TempDataDictionary-Objekt des Controllers speichern, bevor sie die RedirectToAction-Methode des Controllers aufruft, um die nächste Aktion aufzurufen. Der TempData-Eigenschaftswert wird im Sitzungszustand gespeichert. Jede Aktionsmethode, die nach dem Festlegen des TempDataDictionary-Werts aufgerufen wird, kann Werte vom Objekt abrufen und sie dann verarbeiten oder anzeigen. Der Wert von TempData bleibt bestehen, bis es gelesen wird oder bis die Sitzung abläuft. Wenn Sie TempData auf diese Weise beibehalten, können Sie Szenarien wie die Umleitung verwenden, da die Werte in TempData über eine einzige Anforderung hinaus verfügbar sind.
so würde ich speichern ViewBag.Something in einem TempData wenn ich einreichen getroffen und Wenn etwas schief geht, steht es zur Verfügung? Das könnte zu Problemen führen, weil mein Label aus dem ViewBag geladen wird und ich denke, jetzt muss ich eine Art von if haben? – Pittfall
Siehe mein Update für eine weitere Option, die Sie ausprobieren können. –
Danke für die Hilfe, es sieht gut aus, aber ich ging in eine andere Richtung, so kann ich Ihre Antwort nicht akzeptieren – Pittfall
angezeigte Nachricht in viewbag nach der Einlieferung (I Benutzer dieser Methode)
ActionResult SubmitUser(){
ViewBag.Msg =TempData["Msg"];
return view();
}
[HtttpPost]
ActionResult SubmitUser(){
TempData["Msg"] ="Submitted Successfully"];
return view();
}
Der Wert wird senden Methode zu bekommen ..
- 1. Sitzungswerte können nicht gespeichert werden
- 2. Wie können VMware Fusion VMs gespeichert werden?
- 3. Wo können Metadaten gespeichert werden?
- 4. Wie können mehrsprachige Daten gespeichert werden?
- 5. Wie können Objektbeziehungen in Lucene gespeichert werden?
- 6. Limit-Daten (Größe) können in einem Javascript-Array gespeichert werden.
- 7. Servlets: Wo können hochgeladene Dateien gespeichert werden?
- 8. Können abgeleitete Objektzeiger in einem Array von Basisklassenzeigern gespeichert werden?
- 9. Daten können nicht in Sitzung gespeichert werden
- 10. Dokumentenverwaltungssystem - Wo können Dateien gespeichert werden?
- 11. Wo können Delphi DCU-Dateien gespeichert werden?
- 12. Wo können mobile Daten gespeichert werden (Großprojekt)?
- 13. Wo können VAO-Attribute gespeichert werden?
- 14. Wie können Bereichsdaten in HBase gespeichert und abgefragt werden? Derzeit
- 15. Daten können nicht in Realm gespeichert werden
- 16. Wie können erweiterbare Metadaten in .NET ORM-freundlich gespeichert werden?
- 17. OneLogin - Muss 'session_via_api_token' per Formularpost aufgerufen werden?
- 18. Wie können C-Bibliotheksabhängigkeiten in der Versionskontrolle gespeichert werden?
- 19. Wie können mehrere Dropdown-Werte in einer Variablen gespeichert werden?
- 20. SQLite-Updates werden nicht gespeichert oder können nicht ausgeführt werden
- 21. Ein AWS-Lambda aus einem Formularpost auslösen
- 22. Android: Wie können Variablenwerte in der Registrierung gespeichert werden?
- 23. Wie können lokale Variablen in jQuery-Klickfunktionen gespeichert werden?
- 24. Wie können wiederkehrende Aufgaben in Schienen modelliert und gespeichert werden?
- 25. Wie können Unicode-Zeichen in Cookies sicher gespeichert werden?
- 26. Wie können Datenbankeinträge am besten lokal gespeichert werden?
- 27. Wie können Nachrichten auf einer Flask-Website gespeichert werden?
- 28. Wie können Benutzerdaten im Frühjahr am besten gespeichert werden?
- 29. Wie können mehrere Zeilen gleichzeitig in MVC4 gespeichert werden?
- 30. Wie können mehrere Einträge in CoreData gespeichert werden?
Dies hat ein Sicherheitsproblem. Wenn jemand den Code inspiziert, kann er die Daten erhalten oder sogar ändern ... Auch was, wenn es ein Objekt ist? – Nick