0

部分ビューに次のコードがあります。

@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 プロパティのエディターは必要ありません。送信時にコントローラーに戻すだけです。

部分ビューに加えられた変更のみを使用して部分ビューに渡されたモデル全体をコントローラーに戻すにはどうすればよいですか?

4

1 に答える 1

0

フォームを投稿すると、投稿した値を使用してモデルの新しいコピーが作成されます。他の値が必要な場合は、投稿する必要のある他の要素に@Html.HiddenForを入力してください。

于 2012-04-09T15:43:16.163 に答える