Rückkehr ein ActionResult aus einem anderen ActionResult
Sagen, ich habe den folgenden code, verhöhnt, bis in den Editor, also entschuldigt eventuelle kleine Fehler 🙂
//Default page
public ActionResult Index()
{
var musicViewModel
{
Albums = GetTopSellingAlbums(5),
Genres = GetTopGenres(5),
Artists = GetTopArtists(5)
};
return View(musicViewModel);
}
[HttpPost]
public ActionResult Index(MusicViewModel musicViewModel)
{
//For the example, pretend I have a class called musicStoreSubmission in my
//viewmodel which holds a few different fields the user fills out.
if(ModelState.IsValid)
{
//Do some actions based on the user submitting a form
}
//Else, refresh page with errors in Modelstate.
var musicViewModel
{
Albums = GetTopSellingAlbums(5),
Genres = GetTopGenres(5),
Artists = GetTopArtists(5)
};
return View(musicViewModel);
}
Meine Sorge ist, dass, um ein postback Fehler mit dem ModelState unwirksam, muss ich generieren das viewmodel wieder so, dass alle Elemente auf der Seite, die diese Objekte verwenden können erstellt werden (genres, Interpreten, etc.). Das problem ist, es verlangt von mir kopieren und einfügen von einigen der code von ActionResult zu ActionResult, scheinbar macht mein code nicht sehr TROCKEN.
Gibt es eine bessere Möglichkeit der Vermeidung von wiederholten code wie diesem? Im moment habe ich einfach verschoben, die Erzeugung von Standard-Objekte das viewmodel muss in eine separate Methode und/oder der Konstruktor, aber es ist ein bisschen chaotisch, da ich zu generieren Sie alle Objekte, die ich brauchen könnte für die gesamte Steuerung. Was ich hatte gehofft, ich könnte tun wäre, um meinen zweiten Index-Aktion auf die erste Index-Aktion nur verwenden, als eine reguläre Methode. Ich habe versucht ein paar verschiedene Möglichkeiten, dies zu tun, obwohl, und kann nicht scheinen, um eine ActionResult in ein anderes ActionResult.
Irgendwelche Gedanken?
InformationsquelleAutor boolean | 2011-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zurück können Sie einen anderen ActionResult Methode wie diese:
oder könnte passieren das gebuchte Modell zurück zu ViewResult
Der zweite Ansatz ist besser, da Sie nicht den Wiederaufbau der ViewModel -
Option #2, das Modell müsste neu gefüllt werden, aus der Get* - Methoden, also er ist wieder da, wo er begann.
Was ist, wenn ich zurückkehren wollen-Ansicht, die anders ist, die Rückkehr von der Rückkehr (weitergeleitet Ansicht)
InformationsquelleAutor Mark
Ich würde vorschlagen, die Anwendung Post/Redirect/Get Muster. Es ist perfekt geeignet für MVC-web-apps.
Überprüfen Sie diese Antwort für code-Beispiel:
ModelState.IsValid oder Modell.IsValid?
Wenn Sie könnte zumindest upvote, das ist OK...
InformationsquelleAutor Jakub Konecki