“保留”选项卡控制MVC 2中的数据

时间:2011-03-03 15:27:39

标签: asp.net-mvc-2

我有多个标签,我为每个标签调用一个ascx文件,我为每个ascx文件提供了一些控制和提交按钮。现在,当我在第一个选项卡中输入数据并切换到第二个选项卡并输入一些数据并单击提交时,第一个选项卡数据也变空。

我想保留第一个标签的数据,或者当我在第一个标签上输入数据并点击提交时,其他标签中的数据必须在那里。

任何人都可以找到解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

MVC2没有像web.forms那样的“viewstate”。这意味着如果它不以某种方式出现在屏幕上,则必须将其存储在会话中以保留它。我不会建议使用会话,因为在某些情况下你可以将自己绑在一起,但可以适合某些事情。

如果您不想使用会话,则基本上还有2个选项:

1 - 在1页上显示所有标签,然后使用jquery显示/隐藏它们到客户端

例如:

<a href="#" onclick="showTab('tabcontents1');">Tab 1</a>
<a href="#" onclick="showTab('tabcontents2');">Tab 2</a>
<a href="#" onclick="showTab('tabcontents3');">Tab 3</a>

<div id="tabcontents1" class="tabcont">
...
</div>
<div id="tabcontents2" class="tabcont">
...
</div>
<div id="tabcontents3" class="tabcont">
...
</div>

然后使用JQuery或javascript在加载时隐藏它们并在点击时显示它们。例如:

$(document).ready(function () {
   $(".tabcont").hide();
});

function showTab(tab) {
   $(".tabcont").hide();
   $("#"+tab).show();
}

OR

2 - 将您想要保留的任何数据放在表单上的隐藏输入中。如果你只有一个小型号,这可能是最简单的方法。

注意:此规则是HTML规则,而不是MVC规则。 Webforms只是“伪造”了ViewState的持久性,MVC对你如何处理http更加诚实。