「個人情報の更新」、「注文の確認」、「ログオン情報の変更」というタブの名前を見ると、これらはかなり異なっているように見えますが、ユーザーが実行できる関連オプションです。
私には、これらを 3 つの異なるビューを持つ 3 つの異なるアクションに分割すること、つまり、表示されているタブのアクションのみをレンダリングすることは理にかなっています。このように、ユーザーが詳細を更新したいだけの場合、サーバーは注文を確認するために DB クエリを実行しません。
3 つのタブのように見えるように CSS を使用してスタイルを設定しますが、実際には各タブは新しいリクエストを実行するリンクになり、3 つのタブがあるように見えます。
例えば
<div id="content">
<ul>
<li class="active">Update Personal Details</li>
<li>@Html.ActionLink("Check Order","CheckOrder")</li>
<li>@Html.ActionLink("Update Logon Details","UpdateLogonDetails")</li>
</ul>
<div id="tab1" />
... Update Personal Details Tab... etc
</div>
... tab2 and tab 3 not included...
</div>
CheckOrder と UpdateLogonDetails のアクションは、基本的に同じビューをレンダリングしますが、別のタブが表示されます。
これにより、実際にはタブを使用していなくても、すべてがタブを使用して実行されているような錯覚が生じます。
次に、すべてが実行されたら、JQuery を使用してこれらのリンクを更新し、AJAX を介してリクエストを発行し、結果を部分ビューとして返し、コンテンツ div を結果で更新します。これは、Javascript が有効になっている人は適切な「ajax」エクスペリエンスを得ることができますが、javascript が無効になっている人でも問題なく動作することを意味します。