【发布时间】:2021-07-28 05:59:43
【问题描述】:
我有一个包含多个部分视图的 Asp.Net Core Razor 页面。 在返回主页控制器的帖子中,我的部分视图模型为空值。
如何确保这些内容正确填充并作为主视图模型的一部分发送 到我的控制器?
下面是一个简化的例子。 这是我的模型定义:
public class MainPageViewModel
{
public string DocumentName { get; set; }
public string DocumentNumber { get; set; }
public string ViewName { get; set; }
public PartialSampleViewModel PartialSampleModel { get; set; }
}
public class PartialSampleViewModel
{
public DateTime DetailsDate { get; set; }
public String DetailsDescription { get; set; }
}
这是我的控制器定义:
public class MainPageController : Controller
{
public async Task<IActionResult> Index()
{
var viewModel = new MainPageViewModel()
{
DocumentName = "Foo",
DocumentNumber = "1",
PartialSampleModel = new PartialSampleViewModel()
{
DetalsDate = DateTime.Now,
DetailsDescription = "Description"
}
};
return View(viewModel);
}
[HttpPost]
public async Task<IActionResult> SaveDocument(MainPageViewModel mainPageViewModel)
{
// mainPageViewModel.PartialSampleModel is null.
}
}
这是我的主页定义:
@model MainPageViewModel
<form method="post" action="SaveDocument" >
<div id="InputFormPanel" class="InputFormPanel">
<partial name="@Model.ViewName" model="@Model.PartialSampleModel" />
</div>
<div class="col-md-2">
<label asp-for="DocumentName">Document Name:</label>
</div>
<div class="col-md-4">
<input class="form-control" asp-for="DocumentName" />
<span asp-validation-for="DocumentName" class="text-danger"></span>
</div>
<div class="col-md-1">
<label asp-for="DocumentNumber">Number:</label>
</div>
<div class="col-md-2">
<input class="form-control" asp-for="DocumentNumber" />
</div>
<!-- A bunch more common fields on main page -->
<div class="text-center panel-body">
<button id="SaveButton" class="btn btn-sm btn-primary ApproveDocument" >Save Form</button>
</div>
</form>
这是我的局部视图定义:
@model PartialSampleModelRecord
<div class="row">
<div class="col-md-6">
<label asp-for="DetailsDate">Date:: </label></td>
</div>
<div class="col-md-6">
<input class="form-control" asp-for="DetailsDate" />
</div>
</div>
<div class="row">
<div class="col-md-6">
<label asp-for="DetailsDescription">Description:</label>
</div>
<div class="col-md-6">
<input class="form-control" asp-for="DetailsDescription" />
</div>
</div>
<!-- A bunch more other fields -->
问题出在我的模型定义还是我的 PartialView(s) 的定义上?
【问题讨论】:
标签: c# asp.net-core razor