C# 部分视图中的数据未过帐

C# 部分视图中的数据未过帐,c#,partial-views,razor-pages,asp.net-mvc-partialview,C#,Partial Views,Razor Pages,Asp.net Mvc Partialview,我有以下一页: <form method="post"> <hr /> <h4>Alert</h4> <div class="card-overview"> <div class="card-columns"> <partial name="_Alert" model="Model.Details.AlertPageModel" /> </div> </div&g

我有以下一页:

<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">
这导致我的部分观点如下:

@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仍然为空。 我以为会这样填满的。
我缺少什么?

表单发回时,元素的名称映射到模型中的属性。看起来名字不正确。您需要指定如下所示的文本框名称,以便将其发布到属性中:

@Html.TextBox("Details.AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("Details.AlertPageModel.AlertPageModel.Message", Model.Message)
由于您的模型AlertPageModel是主模型类中Details属性的属性,我们需要正确指定名称,以便将其映射到适当的模型对象,并且模型绑定器可以确定此值需要映射到模型对象中的特定属性

或者,您可以使用EditorFor并定义一个编辑器模板,而不是partial,后者负责为适当的名称添加前缀,以便将其正确绑定到表单post中。您可以在以下帖子中了解更多信息:


希望它有意义。

使您的模型包含两个视图的属性,然后它将正确映射,您可以筛选您要查找的值。@mahlatse:我不确定您的意思。你能解释一下吗?这个想法是,如果你把模型A、B、C、D作为视图中的部分模型,那么它们各自的模型都会通过父模型表单发回,所以你只需要将属性作为mainview模型和过滤器服务器端的一部分包含进去。或者只需使用一个简单的js sript来更改您的动作和post@mahlatse:对不起,我还是不明白你的意思。你能举个例子吗?