在同一页面内的选项卡之间共享相同的 ViewModel?

问题描述 投票:0回答:1

父部分视图使用包含 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没有记录)

visual-studio asp.net-mvc-4
1个回答
0
投票

在您的场景中,ViewModel 的单个实例用于渲染部分视图。一旦页面被渲染,ViewModel 本身就不会保留。这只是一个 HTML 页面。

输入字段的名称属性与 ViewModel 的属性相匹配。提交表单后,数据将根据匹配的名称属性反序列化到您的 ViewModel 中。只要它们的名字正确,你就应该很好。

确保将所有输入(所有选项卡)放入一个表单中。

© www.soinside.com 2019 - 2024. All rights reserved.