私はASP.Net MVCのWebサイト「Mandarin online online」を持っています。運用可能で、うまく動作しています。今、このウェブサイトを新しいウェブサイトのテンプレートとして再利用したい、「スペイン語をオンラインで学ぶ」どちらのウェブサイトも完全に異なるドメイン上にあり、まったく異なるサーバー上にあります。私の「オンラインマンダリンを学ぶ」のウェブサイトのため外部ページが異なる2つの異なるWebサイトの構造、内部ページは同じです
、ウェブページの1/3は、ユーザーがウェブサイトにログインせずに閲覧することができます外部ページです。 他の2/3のウェブページは内部ページであり、ユーザーがウェブサイトにログインしている場合にのみ見ることができます。 両方のWebサイトで異なる外部ページ(両方のサイトで外部の.aspxページが異なる)を使用しますが、両方のWebサイトが同じ内部ページのセットを共有するようにします(内部の.aspxページは両方のWebサイト)。
私の質問は、ASP.Net MVCで、どのように両方のWebサイトのプロジェクト/ソリューションを構成できますか?両方のWebサイトの唯一の違いは外部ページなので、外部ページを処理するために考えられる最も簡単な解決策は、各ビューのマッピングをデータベースに保存し、一定の定数(つまりWebsiteType)に基づいてデータベースからこのマッピングを取得し、 web.configで設定し、マッピングに基づいてビューを返します。例えば、私のコントローラで:
// WebsiteType is stored in web.config. It is set to LearnMandarin for the learn Manadarin
// online website and it is set to LearnSpanish for the learn Spanish online website
string websiteType = WebConfigurationManager.AppSettings["WebsiteType"];
// figure out which Homepage .aspx view to return, based on the websiteType
// GetView(...) will get the mapping from the database
string viewToReturn = GetView(websiteType, "HomepageView");
return View(viewToReturn);
これは私がこれまでの考えることができるきれいな解決策と私は考えることができる最善の構造です。私は同じディレクトリに2つの異なる.aspxファイルを持つことになります.1つの.aspxページは、MandarinのオンラインWebサイトを学習するためのページ、もう1つは、スペイン語のWebサイトを学習するためのanother.aspxファイルです。これは私のプロジェクトを構成する最善の方法ですか、それとももっとクリーンな方法ですか?
(Iは、Visual Studio 2010とASP.Net MVCのバージョン3.0.0.0を使用しています)
これはMVCの*エリア*機能は持っているものは本当にあります〜のために作成されました! – Haney
私の内部ページはエリアの下にあるべきではありませんが、私の外部ページはエリアの下にあるべきですか?私はAreaを使うのが初めてだから、スピードアップしていなければ謝罪します(私は今それをチュートリアルで読んでいます)。 –
Webサイトのドメインやその他の要因に基づいてArea RequestContextデータを設定する属性を作成し、適切な場所にページを配置することができます。 – Haney