Eine Anfängerfrage - Ich habe einen HomeController, HomeModel und HomeView. Wenn der Benutzer auf die http://page/Home
Seite kommt, wird Index
Methode ausgeführt und er kann einige Steuerelemente ausfüllen. Nachdem er auf eine Schaltfläche (Postback) geklickt hat, wird die Aktion Prozess ausgeführt und im Fehlerfall ruft die Anwendung die Methode ModelState.AddModelError
auf. Dann wird die Aktion Index
erneut aufgerufen und ich kann den Fehler auf der Seite anzeigen.So erhalten Sie die URL beim Zurückgeben neuer Ansicht
Das funktioniert OK, aber das Problem ist, dass nach dem Postback die neue URL http://page/Home/Index
statt http://page/Home
ist. Irgendeine Idee, wie man das verhindert?
PS - versuchte ich this Lösung, aber dann wird die neue URL war so etwas wie http://page/Home?...long string of serialized ModelState data...
Mein Controller:
[HttpGet]
public ActionResult Index(MyModel model)
{
return View(model);
}
[HttpPost]
public ActionResult Process(MyModel model)
{
if (...error...)
{
model.SetErrorState();
ModelState.AddModelError("ProcessError", "error message");
return View("Index", model);
}
else
{
// do something...
model.SetSuccessState();
return View("Index", model);
}
}
Ich habe bei meiner Frage einen Fehler gemacht - beide Methoden erwarten einen Parameter vom selben Typ 'MyModel'. Wenn ich das korrigiere und Ihre Lösung anwende, dann beschwert sich der Compiler: "Type HomeController definiert bereits ein Member namens Index mit denselben Parametertypen". – sventevit
aktualisiert @sventevit :) fügen Sie einfach die (unbenutzte) 'FormCollection' var hinzu, um zu unterscheiden. – scgough
perfekt, danke :) – sventevit