部分视图中的数据未发布

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

希望它有意义。