私は、フォームと部分フォームの2つのバリエーションについて疑問に思っています。サブミットは親ページにあり、私は部分ビューに渡すものを変更しました。メインビューには、次のMVC 3パーシャルビューとそれに送信する必要があるもの
@model MasterDetailSample.Models.HomeViewModel
@using (Html.BeginForm()) {
<div>
@{Html.RenderPartial("_PersonView", @Model);}
</div>
<input type="submit" value="Save" />
}
ようなものを有する:シナリオ1(
1. {;セットを取得}パブリックプロパティ名と公開人の従業員を有する)I関連HomeViewModelと親ビューを持っていますこのシナリオでは、私はHomeViewModel全体を部分ビュー_PersonViewに渡しています。 _PersonView部分ビュー内で、@ model.Employee.Nameを介してHomeViewModelすなわちPersonオブジェクトのプロパティを参照する必要があります(このシナリオでは、サブフォームは部分ビュー内ではなく親フォームにあります)
コントローラのフォーム(POST)に次のモデルを介してEmployee "Name"のプロパティにアクセスする必要があります。Employee.Name
これは動作するようですが、部分的にEmployeeオブジェクト)
2.)シナリオ2 このシナリオでは、Employeeオブジェクトを部分ビューに送信するだけです。再び開始フォームと送信は親フォームにあります。
私はコントローラEmployeeオブジェクト内のフォームを提出するときに、親フォームから私は今@ Employee.Nameを経由してPersonオブジェクトのNameプロパティを参照する部分ビュー内
@{Html.RenderPartial("_MasterView", @Model.Employee);}
などを持っています自動車モデルのバインダーからは入手できません。私は、モデルパラメータ
すなわち
[HttpPost]
public ActionResult Index(ModelViewModel model) {
**//model.Employee is null!**
return View();
}
なぜからformcollectionを経由してプロパティにアクセスすることはできませんが? (model.Employee nullです)私はパーツビューのPersonオブジェクトを受け入れるだけですが、親ページから送信した後、Employeeプロパティはnullです。部分ビューでは、私はそれだけに送信されるPersonオブジェクトが必要に部分をしたいと思い@modelライン上
@model MasterDetailSample.Models.Person
を以下のように使用していますが、私は、メインフォームに提出したいと思います。私はこのようにすれば、いくつかの状況で部分ビューを再利用することができますが、HomeViewModelを送信する必要がある場合、この部分ビューをどのように使用できるかが大幅に制限されています。だから、私は部分ビューのモデルとしてPersonを使いたいだけですが、親ビューからサブミットしたときにプロパティにアクセスできる必要があります。
これはできますか?はいの場合はどうですか?