【发布时间】:2009-05-30 21:09:33
【问题描述】:
当您有一个由 Html.BeginForm() 创建的 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("Title") 的值从何而来?我知道,模型。在这种情况下,模型确实有一个 Title 字段。但是在某些情况下,我必须创建一个视图模型,所以我最终得到了类似的东西:
public class DinnerViewModel {
public Dinner Dinner {get; set;};
public SomethingElse SomethingElse {get; set;};
}
并将其用作模型, 获得正确的值。或者至少在验证失败并重新显示表单时会这样做。
我问是因为我有一个通过 AJAX 提交的表单(使用 Ajax.BeginForm())并且表单被刷新的案例。我正在为它创建一个空的新模型对象,但它仍在加载上次提交的值。当我在没有 AJAX 的情况下提交时,一切正常。
更新
我正在查看模板中的调试器。 Model.Dinner.Title 等于 "" 但 Html.TextArea("Title", Model.Dinner.Title) 将之前提交的值放入文本区域。
【问题讨论】:
标签: asp.net-mvc ajax forms