部分ビューに次のコードがあります。
@model MyOrganization.MyApp.Models.ProductListing
@using (Ajax.BeginForm("TagProduct", new AjaxOptions() { UpdateTargetId = "FormContainer" , OnSuccess = "$.validator.unobtrusive.parse('form');" }))
{
<p>
@Html.LabelFor(m => m.ModelNumber):
@Html.EditorFor(m => m.ModelNumber)
<A href="javascript:$('form').submit()">Tag Product with This Model Number</A>
@(Html.ValidationMessageFor(m => m.ModelNumber))
</p>
}
この部分ビューが取得するビューモデルはインスタンス化され、そのプロパティの多くは、この部分ビューを含むビューによってハイドレートされます。ただし、ここで送信が呼び出されると、コントローラーが取得するビューモデルには、ModelNumber プロパティのみがハイドレートされます。編集されたプロパティ (ModelNumber) のみが値を取得する部分ビューによって新しいインスタンスが作成されたかのように、他のすべてのプロパティは null です。
@Html.EditorFor(m => m.SerialNumber) を追加すると、含まれているビューがブラウザーのtextbox と、フォームが送信されたときにコントローラーに戻すこともできます。ただし、フォームの SerialNumber プロパティのエディターは必要ありません。送信時にコントローラーに戻すだけです。
部分ビューに加えられた変更のみを使用して部分ビューに渡されたモデル全体をコントローラーに戻すにはどうすればよいですか?