父部分视图使用包含 3 个子模型的 ViewModel。
@using MyDomain.ViewModel.EventViewModel
它有以下 5 个选项卡:
<div class="tab-pane active tabClass" id="tabs-1">
@Html.Partial("_tab1", Model)
</div>
<div class="tab-pane active tabClass" id="tabs-2">
@Html.Partial("_tab2", Model)
</div>
<div class="tab-pane active tabClass" id="tabs-3">
@Html.Partial("_tab3", Model)
</div>
<div class="tab-pane active tabClass" id="tabs-4">
@Html.Partial("_tab4", Model)
</div>
<div class="tab-pane active tabClass" id="tabs-5">
@Html.Partial("_tab5", Model)
</div>
每个选项卡中有一个表单,用户需要填写并单击“下一步”以转到下一个选项卡。在最后一个选项卡上,他/她可以点击提交将所有内容(ViewModel)发送到控制器/操作并直接到另一个页面。
我的问题是,如果我以这种方式将模型传递到这 5 个部分视图中,是否会有 5 个不同的副本/实例,或者只有一个在它们之间共享?我问的原因是因为我担心每个选项卡都有自己的 ViewModel 实例,并且当在最后一个选项卡中点击提交按钮时,只有来自该选项卡的输入才会保存到模型中并提交(换句话说,来自tab1-4没有记录)
在您的场景中,ViewModel 的单个实例用于渲染部分视图。一旦页面被渲染,ViewModel 本身就不会保留。这只是一个 HTML 页面。
输入字段的名称属性与 ViewModel 的属性相匹配。提交表单后,数据将根据匹配的名称属性反序列化到您的 ViewModel 中。只要它们的名字正确,你就应该很好。
确保将所有输入(所有选项卡)放入一个表单中。