Ich versuche nur, zurück in .NET MVC mit der neuen Version zu bekommen, und ich kann nicht meinen Kopf rund um den Weg erhalten, ist verbindlich für das DataModel.Was ich falsch verstehe, wie Html.TextBoxFor funktioniert
Ich habe ein Modell mit einer Eigenschaft „first_name“ und innerhalb einer HTML-Form habe ich die folgenden
<%= 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 einer Aktion auf einem Controller, wenn ich die first_name Eigenschaft auf meinem Modell gesetzt und tue
mymodelObject.first_name = "Test";
return View(mymodelObject);
Was ist der Grund, warum nur die dritte Textbox diesen Wert von first_name aufgreift und die anderen beiden nicht?
Edit:
Ich habe wahrscheinlich die gut genug, um nicht erklärt, sorry. Stellen Sie sich vor, ich habe 2 Controller-Methoden -
public ActionResult Register()
{
Registration model = new Registration();
model.first_name = "test";
return View(model);
}
Mit diesem entweder Bindung funktioniert.
Danach wurde angezeigt ich dann auf eine Schaltfläche auf dem Formular klicken und versuchen, und führen Sie dies:
[HttpPost]
public ActionResult Register(Registration_ViewData model)
{
model.first_name = "Steve";
return View(model);
}
Was ich frage ist, warum funktioniert die dritte aber nicht die erste 2 binden an „Steve“ als der neue Name.
Sind alle aber nur drei Textfelder angezeigt das dritte hat „Test“ in? Oder wird nur das dritte Textfeld angezeigt? Ich habe gerade Ihren Code in einer Test-App versucht und alle drei funktionieren gut. Welche Version von MVC 2 verwenden Sie? – lancscoder
Hallo Simon, sorry - mehr Hintergrund hinzugefügt es nach einem HttpPost, dass ich nicht scheinen kann, um den Wert, z. wenn ich eine Schaltfläche im Formular "Klicken Sie hier, wenn Ihr Name Steve ist" hätte. dann füllt es den Wert des dritten Textfelds und lässt die anderen zwei. Tut mir leid, ein bisschen Anfänger Ich bin mir sicher, dass ich das mit meiner Erklärung für jeden schwieriger mache. –
Dies hat möglicherweise etwas mit Ihrem ModelState zu tun, da Sie die gleiche Ansicht bereitstellen und zurückgeben, aber nicht die Formularsammlungswerte verwenden, um das Modell zu aktualisieren. Überprüfen Sie Ihre ModelState-Schlüssel und -Werte, um zu sehen, ob beim zweiten Rendern der Seite der Wert für die ersten beiden Felder "test" oder "Steve" ist. –