當你有一個由Html.BeginForm()創建的ASP.Net MVC表單時,它裏面的字段如何填充?在如何在ASP.Net MVC中預填充表單?
<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(「標題」)%>獲取正確的價值。或者至少如果驗證失敗並且表單重新顯示,就會出現這種情況。
我在問,因爲我有一個通過AJAX提交的表單(使用Ajax.BeginForm()),表單被刷新。我爲它創建了一個新的模型對象,爲空,但它仍然加載最後提交的值。當我沒有AJAX提交一切正常。
更新
我看在模板中的調試器。 Model.Dinner.Title等於「」,但Html.TextArea(「Title」,Model.Dinner.Title)放置在文本區域內提交的以前的值。
我將一個空模型傳遞給視圖。 – Pablo 2009-05-30 21:47:12