部分视图中的数据未发布
Data from partial view not posting
我有以下页面:
<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">
现在当我对页面执行 post 时,我的 AlerPageModel 仍然是空的。
我以为它会以这种方式被填满。
我错过了什么?
当表单 post 返回时,元素名称映射到模型中的 属性。看起来名字不正确。您需要像下面这样指定文本框名称,以便它在 属性 中被 posted :
@Html.TextBox("Details.AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("Details.AlertPageModel.AlertPageModel.Message", Model.Message)
由于您的模型 AlertPageModel
是主模型 class 中 Details
属性 的 属性,我们需要正确指定名称,以便它被映射到正确的 Model 对象,Model Binder 可以确定该值需要映射到 Model 对象中的哪个特定 属性。
或者您可以使用 EditorFor
并定义一个编辑器模板而不是 partial ,它负责为专有名称添加前缀,以便它以 post 的形式正确绑定。您可以在以下 post:
阅读更多相关信息
https://www.codeproject.com/Articles/1079909/ASP-NET-MVC-Partial-Views-with-Partial-Models
希望它有意义。
我有以下页面:
<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">
现在当我对页面执行 post 时,我的 AlerPageModel 仍然是空的。 我以为它会以这种方式被填满。 我错过了什么?
当表单 post 返回时,元素名称映射到模型中的 属性。看起来名字不正确。您需要像下面这样指定文本框名称,以便它在 属性 中被 posted :
@Html.TextBox("Details.AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("Details.AlertPageModel.AlertPageModel.Message", Model.Message)
由于您的模型 AlertPageModel
是主模型 class 中 Details
属性 的 属性,我们需要正确指定名称,以便它被映射到正确的 Model 对象,Model Binder 可以确定该值需要映射到 Model 对象中的哪个特定 属性。
或者您可以使用 EditorFor
并定义一个编辑器模板而不是 partial ,它负责为专有名称添加前缀,以便它以 post 的形式正确绑定。您可以在以下 post:
https://www.codeproject.com/Articles/1079909/ASP-NET-MVC-Partial-Views-with-Partial-Models
希望它有意义。