2009-04-02 3 views
1

これで、ASP.NET MVCでナビゲーションタブを処理する方法がわかりました。例を挙げて、ここでstackoverflowのようなタブがあるとします。したがって、質問、タグ、ユーザーなどMVCナビゲーションタブ

ここでは、このメインの下に「サブタブ」があるとします。したがって、メインの[質問]タブを選択した後は、[表示]タブと[追加]タブが表示されます。いくつかの質問:

  • が、それは、これらの2つのインスタンスのためのhttp://site/questions/viewhttp://site/questions/addのようなルートのセットを持っているのがベストでしょうか?

  • メインタブ(質問、タグなど)、サブタブのID値(ビューと追加)のそれぞれのアクションを含むNavigationControllerがありますか。そして、これはあなたに次のようなものを与えるだろう:

公共のActionResult質問(文字列表示)

公共のActionResultタグ(文字列表示)

その他、各種

  • それとも、希望をタブ/ナビゲーション項目ごとにコントローラを持っていれば、どのように実装されますか?

  • 強調表示のような方法で選択したタブを表示する必要があるとします。ナビゲーションタブのビュー(これについては部分的な見方があると思います)では、URLを直接参照して強調表示するかどうかを判断します。任意のポインタを事前に

おかげ

答えて

2

あなたの最善の策は、RESTに固執するだろう。私はメインタブごとにコントローラーを持ち、可能なRESTアクションに対応する各サブタブを持つことに固執します:index、new。編集と削除はアイテム固有のものなので、タブは表示されません。 Createはnewで呼び出され、editで更新されます。

あなたの例の例外は、[Ask a Question]タブです。 [質問]タブ(インデックス)と同じレベルですが、[質問/新規]を呼び出します。

1

あなたのコントローラは、ユーザーインターフェイスよりもモデルに密接に拘束されている必要があります(私の答えはthis question参照)。一般的には、モデルの入力を処理するコントローラー、つまり自分のモデルに何かを行い、そのアクションに対応するビュー(UI)を返すコントローラを考えるべきだと思います。 UIの要素は、必ずしもそうである必要はありませんが、モデル階層を反映することができます。たとえば、QuestionsUnanswered、およびAsk a Questionはすべて質問モデルに関連しているように見えますが、すべてトップレベルのインターフェイス要素です。 Unansweredもそれ自体のコントローラーを持っているようだが、.../questions/unansweredとしてではなく.../unansweredとして簡単に実装されている可能性がある。

+0

[OK]をクリックします。ただし、タブはサイトのセクションにすぎません。たとえば、銀行のサイトで、クレジットカード、銀行口座、住宅ローンなどさまざまなセクションがあるとしましょう。 CreditCardControllerまたはそのセクションのメインタブごとのコントローラ? –

+0

これは、基礎となるモデルと実際にリンクが何をしているかによって異なります。例えば、それぞれの情報は、情報コントローラによって処理されてもよい。アカウントにはアカウントコントローラがあり、アカウントタイプ/サブアカウントごとにアクションがあります。 – tvanfosson

関連する問題