Ich habe mit ASP.NET MVC gespielt und lief in etwas, das ich nicht herausfinden kann.ASP.NET MVC: Ändern der Eigenschaften des Modells auf Postback
Angenommen, ich habe ein Objekt wie folgt aus:
public class TestObject
{
public string Name { get; set; }
public int Age { get; set; }
}
Und eine Ansichtsseite (Create.aspx) wie folgt aus:
<form action="/Create" method="post">
<p>
<%=Html.TextBox("Name") %>
</p>
<p>
<%=Html.TextBox("Age")%>
</p>
</form>
Und auf meinem Controller habe ich diese Aktionen:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View(new TestObject { Name = "DefaultName", Age = 10 });
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(TestObject o)
{
o.Name = "ChangedNameToSomethingElse";
o.Age = 15;
return View(o);
}
Die Methode Html.TextBox()
erzeugt immer die Textfelder mit den Standardwerten, auch nach der pos tback, wo das Objekt mit verschiedenen Eigenschaften für seine Werte zurückgegeben wird. Nun, zugegeben, ich kann mir kein Beispiel aus der realen Welt vorstellen, warum ich so etwas tun möchte, aber ich verstehe immer noch nicht, warum ich immer Textfelder mit den Werten des Modells bevölkert habe, die in der Aktion Erstellen festgelegt wurden mit dem AcceptVerbs(HttpVerbs.Get)
Attribut.
Hinweis: Ich habe versucht Html.TextBox("Name", Model.Name)
, aber das Ergebnis ist immer noch das gleiche. Und ich habe überprüft, dass die Create-Aktion mit AcceptVerbs(HttpVerbs.Post)
tatsächlich ausgeführt wird, indem Sie einen Wert über ViewData an die Ansicht übergeben. Auch der udated Wert wird angezeigt, wenn ich den Wert mit <%=Model.Name %>
aber wieder, nicht auf der Textbox ausgab.
Gibt es etwas Offensichtliches, das ich vermisse, oder gibt es eine Begründung für dieses Verhalten?
Sie könnten auch in meiner Antwort auf ähnliche Frage - http://stackoverflow.com/questions/953330/does-html-textbox-uses-request-params-instead-of-model/954524#954524 –