私は5つのフォームを含むかみそりビューを持っています。 (A、B、C、D、E)である。これらのフォームには、それぞれ独自のViewModel(AViewModel、BViewModel、CViewModel、DViewModel、EViewModel)があります。MVC Razor Viewで複数のフォームを単一のビューモデルで転記する
ページを唯一のViewModelとして使用する親ProductViewModelを作成しました。このViewModel内には、ページ上の各フォームの他のすべてのViewModelが表示されます(上にリストされています)。ここで
はProductViewModelの性質がどのように見えるかです:
public AViewModel { get; set; }
public BViewModel { get; set; }
public CViewModel { get; set; }
public DViewModel { get; set; }
public EViewModel { get; set; }
マイかみそりビューは、次のようになります。
保存]ボタンを私が終わるクリックされた@model MVCApp.ViewModels.ProductViewModel
@{
ViewData["Title"] = "Product Detail";
}
<h2>Product Detail</h2>
<form asp-controller="A" asp-action="Save" data-ajax="true" data-ajax-method="POST">
<div class="form-horizontal">
<h4>Form A</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="AViewModel.Name" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="AViewModel.Name" class="form-control"/>
<span asp-validation-for="AViewModel.Name" class="text-danger" />
</div>
</div>
<div class="form-group">
<label asp-for="AViewModel.StartDate" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="AViewModel.StartDate" class="form-control"/>
<span asp-validation-for="AViewModel.StartDate" class="text-danger" />
</div>
</div>
<div class="form-group">
<label asp-for="AViewModel.EndDate" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="AViewModel.EndDate" class="form-control"/>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
ちょうど私が期待するAコントローラの(POST)アクションメソッドを保存します。
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Save(AViewModel viewModel)
{
return Ok();
}
しかし、私はviewModel paramのすべてのプロパティが空であることに気付きました。
これは、スコープ内のViewModelだけが移入され、その他すべてがnullになる5つのフォームのすべてに対して、ProductModelオブジェクトをViewModelとしてアクションの保存メソッドに渡す必要があることを意味しますか?それとも良い方法がありますか?
私はここで必要な部分ビューです。ありがとう! –