Когда у вас есть форма ASP.Net MVC, созданная Html.BeginForm (), как заполняются поля внутри нее? В случае
<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>
Откуда берется значение для Html.TextBox ("Заголовок")? Я знаю, модель. И в этом случае модель имеет поле заголовка. Но у меня есть случаи, когда мне нужно создать модель представления, поэтому я получаю что-то вроде:
public class DinnerViewModel {
public Dinner Dinner {get; set;};
public SomethingElse SomethingElse {get; set;};
}
и используйте это как модель, <% = Html.TextBox ("Title")%> получает правильное значение. Или, по крайней мере, это происходит, если проверка не пройдена и форма отображается повторно.
Я спрашиваю, потому что у меня есть случай формы, которая отправляется через AJAX (с использованием Ajax.BeginForm ()), и форма обновляется. Я создаю новый объект модели, пустой, для него, но он все еще загружает значения последней отправки. Когда я отправляю без AJAX, все работает нормально.
Обновление
Я смотрю отладчик в шаблоне. Model.Dinner.Title равен "", но Html.TextArea ("Title", Model.Dinner.Title) помещает предыдущее значение, которое было отправлено в текстовую область.