MVC2 не имеет "viewstate", как web.forms. Это означает, что если он каким-то образом не отображается на экране, вы должны сохранить его в сеансе, чтобы сохранить его. Я бы не рекомендовал использовать сессию, так как в некоторых ситуациях вы можете связать себя узлами, но в некоторых случаях это может подойти.
Если вы не хотите использовать сессию, у вас обычно есть 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();
}
ИЛИ
2 - Поместите любые данные, которые вы хотите сохранить в скрытых вводах в вашей форме. Если у вас есть только маленькая модель, это может быть самый простой подход.
ПРИМЕЧАНИЕ: Это правило является правилом HTML, а не правилом MVC. Веб-формы просто «подделывают» упорство с помощью ViewState, а MVC более честно говорит о том, как вы справляетесь с http.