我是一名有用的助手,可以为您翻译文本。
当点击保存按钮时,我会进入 A 控制器的保存(POST)操作方法,就像我预期的那样:
然而,我注意到viewModel参数的所有属性都是空的。这是否意味着我必须将ProductViewModel对象作为我的ViewModel传递给Save Action方法,在这5个表单中只有范围内的ViewModel将被填充,其他所有内容都将为空?还是有更好的方法?
我有一个 Razor 视图,其中包含 5 个表单 (A、B、C、D、E)。每个表单都有自己的 ViewModel (AViewModel、BViewModel、CViewModel、DViewModel、EViewModel)。
我创建了一个父 ProductViewModel,页面将使用它作为唯一的 ViewModel。在此 ViewModel 中,将包含页面上每个表单的所有其他 ViewModels (如上所述)。
以下是 ProductViewModel 的属性:
public AViewModel { get; set; }
public BViewModel { get; set; }
public CViewModel { get; set; }
public DViewModel { get; set; }
public EViewModel { get; set; }
我的 Razor 视图如下所示:
@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参数的所有属性都是空的。这是否意味着我必须将ProductViewModel对象作为我的ViewModel传递给Save Action方法,在这5个表单中只有范围内的ViewModel将被填充,其他所有内容都将为空?还是有更好的方法?