Wenn Sie über ein ASP.Net MVC-Formular verfügen, das von Html.BeginForm() erstellt wird, wie werden Felder darin ausgefüllt? Im Fall vonWie sind Formulare in ASP.Net MVC vorbelegt?
<asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit Dinner</h2>
<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<% using (Html.BeginForm()) { %>
<p>
<label for="Title">Dinner Title:</label>
<%= Html.TextBox("Title") %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
Woher kommt der Wert für Html.TextBox ("Titel")? Ich weiß, das Modell. Und in diesem Fall hat das Modell ein Titelfeld. Aber ich habe Fälle, in denen ich einen View-Modell zu schaffen haben, so habe ich am Ende mit etwas, wie:
public class DinnerViewModel {
public Dinner Dinner {get; set;};
public SomethingElse SomethingElse {get; set;};
}
und verwenden, die als Modell, das <% = Html.TextBox („Title“)%> die bekommt richtiger Wert. Oder zumindest, wenn die Validierung fehlschlägt und das Formular erneut angezeigt wird.
Ich frage, weil ich einen Fall eines Formulars haben, das über AJAX (unter Verwendung von Ajax.BeginForm()) gesendet wird, und das Formular wird aktualisiert. Ich erstelle ein neues Modellobjekt, leer, dafür, aber es lädt immer noch die Werte der letzten Einreichung. Wenn ich ohne AJAX absende, funktioniert alles gut.
aktualisieren
ich in der Vorlage den Debugger gucke. Model.Dinner.Title ist gleich "" und Html.TextArea ("Title", Model.Dinner.Title) setzt den vorherigen Wert, der innerhalb des Textbereichs gesendet wurde.
Ich übergebe ein leeres Modell zur Ansicht. – Pablo