Ho giocato con ASP.NET MVC e ho trovato qualcosa che non riesco a capire.ASP.NET MVC: modifica delle proprietà del modello sul postback
Supponiamo che io sono un oggetto come questo:
public class TestObject
{
public string Name { get; set; }
public int Age { get; set; }
}
E una pagina di visualizzazione (Create.aspx) come questo:
<form action="/Create" method="post">
<p>
<%=Html.TextBox("Name") %>
</p>
<p>
<%=Html.TextBox("Age")%>
</p>
</form>
E sul mio regolatore ho queste azioni:
[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);
}
Il metodo Html.TextBox()
genera sempre le caselle di testo con i valori predefiniti, anche dopo la posizione tback, dove l'oggetto viene restituito con proprietà diverse sui suoi valori. Ora, scontato, non riesco a pensare ad un esempio del mondo reale perché vorrei fare una cosa del genere ma non riesco ancora a capire perché finisco sempre con l'inserimento di caselle di testo con i valori del modello impostati sull'azione Create con l'attributo AcceptVerbs(HttpVerbs.Get)
.
Nota: ho provato Html.TextBox("Name", Model.Name)
ma il risultato è sempre lo stesso. E ho verificato che l'azione Crea con AcceptVerbs(HttpVerbs.Post)
venga effettivamente eseguita, passando un valore tramite ViewData alla vista. Inoltre, il valore udated viene visualizzato quando emetto il valore con <%=Model.Name %>
ma ancora, non sulla casella di testo.
C'è qualcosa di ovvio che mi manca o c'è un motivo dietro questo comportamento?
Potresti anche essere interessato alla mia risposta a una domanda simile - http://stackoverflow.com/questions/953330/does-html-textbox-uses-request-params-instead-of-model/954524#954524 –