2009-08-26 14 views
0

ich bearbeitet Form haben, dass, wenn gebucht, sollte bei Erfolg auf den nächsten DatensatzFormularwerte nicht auf ASP MVC Ändern

Hier bewegen, ist ein Ausschnitt aus dem Code in der Steuerung:

if (issues.Count == 0) 
    { 
     Service.Save(item); 
     Service.SaveChanges(); 
     return Edit(NextId, listingName); 
    } 
    else 
    { 
     ModelState.AddRuleViolations(issues); 
    } 

    return Edit(item.id, listingName); 

Die ID für den nächsten Datensatz wird korrekt an die Aktion übergeben, aber das automatisch generierte Formular enthält immer noch die Werte des alten Elements und nicht des neuen. Ich habe es debuggt und der Artikel wird geladen und an die Ansicht übergeben.

Antwort

2

Versuchen Sie, eine RedirectToAction anstelle der Rücksendung der Ansicht direkt zu tun.

return RedirectToAction("Edit", new { id = NextId, listingName = listingName }); 

Auch senden Sie den gleichen Wert von listingName in beiden Fällen (Validierungsfehler und Erfolg). Ist das richtig?

1

Haben Sie versucht, die Bearbeitungsansicht explizit zurückzugeben, anstatt den Methodenaufruf zurückzugeben?

Wie so:

return View("Edit", NextId); 

Vielleicht ist es immer noch die alten Werte geschrieben und versucht, mit dem Modell entsprechend neu zu besiedeln ...

+0

Wie würde ich die Parameter NextId und listName übergeben? Kann nicht scheinen, eine Methodensignatur dafür zu finden. – qui

+1

Ein Vorschlag würde sein, sie in einer spezifischen Modellklasse einzuwickeln, ganz wie das DinnerFormViewModel in Scott Guthries Nerddinner Anwendung. Sie können weitere Informationen hier finden http://nerddinnerbook.s3.amazonaws.com/Part6.htm – Robban