2009-08-04 21 views
2

私はコンテンツを管理し、ページを追加/削除できるクライアント用のWebサイトを開発しています。ユーザーがページを追加/削除できるASP.NET MVC Webサイト

同時に、サイトの一部のページは対話型で、ログインした顧客のカスタムレポートを提供します。

レンダリングを完全に制御したいので、私はASP.NET MVCでサイトを開発し始めました。

しかし、概念的にサイトをモデル化することは難しいと思っています。

ユーザーがページを追加/削除できる場合、URLをコントローラに直接マッピングするにはどうすればよいですか?

私は1つの「ページ」コントローラを実行してコンテンツIDを渡すことができますが、それはすべてのコードが1クラスファイルの下にあることを意味します。

私はカスタム/インタラクティブなページを別のコントローラの下に置くことができましたが、顧客はどのようにそれらを管理できますか?

私は本当にこの使いやすさの角度にも失われています。カスタムインタラクティブページを作成している場合、クライアントはどのように追加/削除できますか?それはアプリケーション自体の構造を変更するものではありませんか?

+0

私は1つのオプションを考えています...カスタムルーティングハンドラを作成しています。それはURLを取り、コントローラーが存在しない場合は、一致する名前の「Content」行を検索し、デフォルトのコントローラー(例:Page)を使用して表示します。コントローラーが見つかった場合、そのコントローラーが実行され、一致する「Content」行が存在する場合は、何らかの形でそのコントローラーに渡されます(コンストラクターなど)。これを行うのに十分な柔軟性を持つASP.NET MVCルーティングはありますか? – Jonathan

+0

個人的に私はUmbracoのようなオープンソースのCMSシステムをこのタイプのタスクに使用します。私は特注の機能をCMSに統合するのは、CMSを特注のサイトに統合するよりも簡単だと思います!しかし、幸運。 –

答えて

2

私はあなたとで取得しようとしている正確に何を理解するいくつかの問題があり、どのような問題があるよ:

私は、単一の「ページ」コントローラ を行うと、それをコンテンツIDを渡すことができ、しかし は、 サイト内のすべてのコードが1つのクラスファイルの下にあることを意味します。

私は、カスタム/インタラクティブ ページが異なるコントローラ、 の下に座るが、その後、どのように顧客がそれらを管理することが だろう作るだろうか?

「単一クラスファイル」の何が問題になっていますか?あなたの問題は意味論的な観点からです(つまり、すべてのURLが/ pagesで始まるのを望まないのですか)。それともコード管理だけ?あなたは、データベースから提供していると仮定すると、

、私は次の操作を行います:

  1. 要求を受け入れCMSControllerを持っています。それはa)IDをチェックします(スタブを無視するかもしれません)、またはb)スタブを取り出してdbで探します。
  2. 内容を返します。

こうして/ CMS/Page/4384へのリクエストは、あなたが望むように提供されます。次に、これをいくつかの方法で拡張します。デフォルトアクションを実行すると、/ CMS/4384がページを表示します。次に、スタブ(/ CMS/4384/Page-Title-Or-Whatever-Text)を追加します。/aboutus /と/ product_info /などの追加のルートをCMSControllerのすべてのポイントに設定します。または、CMSControllerを把握するだけです。

また、コントローラはファイルシステム上でhtmlファイルを開き、それを提供することができます。

それはまったく役に立ちますか?

James

関連する問題