我有以下页面:
<form method="post">
<hr />
<h4>Alert</h4>
<div class="card-overview">
<div class="card-columns">
<partial name="_Alert" model="Model.Details.AlertPageModel" />
</div>
</div>
我的局部视图如下:
@model AlertPageModel
<div class="card">
<div class="card-body">
@Html.TextBox("AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("AlertPageModel.Message", Model.Message)
</div>
这导致我的部分视图如下:
<input id="AlertPageModel_Message" name="AlertPageModel.Message" type="text" value="">
<input id="AlertPageModel_AlertDate" name="AlertPageModel.AlertDate" type="text" value="24/06/2019 10:23:12">
现在,当我在页面上发帖时,我的AlerPageModel仍然为空。 我认为这样会充满。 我想念什么?
答案 0 :(得分:1)
回发表单时,元素的名称将映射到模型中的属性。看来名称不正确。您需要像下面这样指定TextBox名称,以便将其发布到属性中:
@Html.TextBox("Details.AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("Details.AlertPageModel.AlertPageModel.Message", Model.Message)
由于模型AlertPageModel
是主Model类中Details
属性的属性,因此我们需要正确指定名称,以便将其映射到适当的Model对象,并且Model Binder可以找出值需要映射到Model对象中的哪个特定属性上。
或者,您可以使用EditorFor
并定义一个编辑器模板,而不是部分编辑器模板,该模板负责为专有名称加上前缀,以便在表单发布中正确地绑定该名称。您可以在以下文章中了解有关此内容的更多信息:
https://www.codeproject.com/Articles/1079909/ASP-NET-MVC-Partial-Views-with-Partial-Models
希望有道理。