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( "Title")の値はどこから来ますか?私は知っている、モデル。この場合、モデルにはタイトルフィールドがあります。
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