Sto solo cercando di tornare a .NET MVC con la nuova versione e non riesco a capire come la vista potrebbe essere vincolante per DataModel.Che cosa ho frainteso su come funziona Html.TextBoxFor
Ho un modello con un "first_name" proprietà e all'interno di un modulo HTML che ho il seguente
<%= Html.TextBox("first_name", Model.first_name)%>
<%= Html.TextBoxFor(model => model.first_name) %>
<input type="text" name="first_name" id="first_name" class="myLabel"
value="<%=Model.first_name %>" />
In un'azione su un controller, se ho impostato la proprietà first_name sul mio modello e fare
mymodelObject.first_name = "Test";
return View(mymodelObject);
Qual è il motivo per cui solo la terza casella di testo rileva questo valore di primo nome e gli altri due no?
Edit:
Probabilmente non ho spiegato abbastanza bene, mi spiace. Immagino di avere 2 metodi di controllo -
public ActionResult Register()
{
Registration model = new Registration();
model.first_name = "test";
return View(model);
}
Con questo uno dei due lavori vincolanti.
Dopo questa è stata mostrata ho quindi fare clic su un pulsante sul modulo e provare ed eseguire questo:
[HttpPost]
public ActionResult Register(Registration_ViewData model)
{
model.first_name = "Steve";
return View(model);
}
Quello che sto chiedendo è il motivo per cui fa il terzo, ma non i primi 2 si legano a "Steve" come il nuovo nome.
sono tutti i tre caselle di testo visualizzata, ma solo la terza ha "Test" in? O è solo la terza casella di testo visualizzata? Ho appena provato il codice in un'applicazione di test e tutti e tre funzionano bene. Quale versione di MVC 2 stai usando? – lancscoder
Ciao Simon, mi dispiace - più background ha aggiunto il suo dopo un HttpPost che non riesco a impostare il valore, ad es. se avessi un pulsante nel modulo chiamato "Clicca qui se il tuo nome è Steve". quindi riempie il valore della terza casella di testo e lascia gli altri due. po 'dispiaciuto di un principiante sono sicuro che sto facendo questo più difficile per tutti con la mia spiegazione. –
Questo potrebbe avere qualcosa a che fare con il tuo ModelState perché si registra e si restituisce la stessa vista ma in realtà non si usano i valori di raccolta del modulo per aggiornare il modello. Controlla i valori e le chiavi ModelState per vedere se durante il rendering della pagina la seconda volta, il valore per le prime due caselle è "test" o "Steve". –