| 

.NET C# Java Javascript Exception

5
In einem MVC Projekt befülle ich ein Property (SelectedMandantenId) im ViewBag mit einem Wert:
@Html.ActionLink("Neues Projekt", "Create", new { mandantenId = item.Id })

public ActionResult Create(int? mandantenId)
{
ViewBag.SelectedMandantenId = mandantenId;
return View();
}

Der Wert wird richtig gesetzt und in der Create-View die aufgerufen wird,kommt dieser Wert auch an

@ViewBag.SelectedMandantenId


wenn ich nun die HttpPost Methode
public ActionResult Create(Project project)

aufrufe ist die Property ViewBag.SelectedMandantenId null.
int? mandantenId = ViewBag.SelectedMandantenId;


Warum verliert der den Wert?
04.01.2012
Mario Priebe 6,0k 3 9
Wenn du in deiner HttpPost Methode dn ViewBag nicht neu setzt ist es relativ klar denke ich - Das Web ist statuslos und bei einem Postback verliert der View auch seine Werte
Nicolai Schönberg 05.01.2012
1 Antwort
1
Nachdem das Ergebnis deiner Action an einen Client gesendet wurde existiert das ViewBag Objekt nicht mehr länger. Wenn deine Create-Action auf dem HttpPost weg aufgerufen wird, wir eine komplett neue Instanz deines Controllers erstellt, und damit auch ein neues ViewBag-Objekt.
Es bleibt dir also nichts anderes übrig als beim Absenden des Formulars die SelectedMandantenId mit an den Server zu sichen. Entweder innerhalb der Route, als Parameter oder innerhalb des POST.

Gruss
17.01.2012
philipooo 124 6
+1 Danke für deine Antwort, so habe ich das mittlerweile auch gelöst.
Mario Priebe 17.01.2012

Stelle deine Mvc3-Frage jetzt!