2009-04-08 12 views
14

ホームページ以外のサイトのすべてのページにCMSコントローラを使用するASP.NET MVCサイトで作業しています。ASP.NET MVCサイトのホームページのルートを設定するにはどうすればよいですか?

ホームコントローラ:

  • www.site.com
  • www.site.com/default.aspx

CMSコントローラー:

ここでアイデアです
  • www.site.com/about
  • www.site.com/agenda/schedule
  • www.site.com/monkey/eats/spaghetti
  • (他のほとんど何でも)

This pageリスト設定する方法のいくつかのオプションデフォルトのページ・ルーティング:

  1. 休職Default.aspxを未配線やアプリケーションへのエントリポイントとunredirected - アプリ(またはその他の静的コンテンツ)のMVC部分にユーザーを取る静的リンクを持ちます。
  2. Page_Loadイベントハンドラコードを使用するか、Response.Redirect( "〜/ home")を使用してホームコントローラに送信します(往復のリダイレクトですが)。
  3. Default.aspxの名前を変更または削除します。マークアップの警告にもかかわらず、default.aspxは、ユーザーが "/"要求を出したときにASP.NET MVCがIISによってアクティブ化されることを保証するために必要です... VS devサーバーまたはIIS7 。デフォルトの要求はアプリケーションルート要求 "/"のままで、既定のルートでキャッチされ、ホームコントローラに送信されます。

もう1つのオプションは、ホームページのケースを検出するロジックを備えたコントローラを1つだけ使用することですが、コンセプトと戦っているようです。

サイトのホームページの特定のルートを設定することをおすすめしますか?

答えて

14

www.site.comルートマップルート

routes.MapRoute(
    "Root", 
    "", 
    new { controller = "Home", action = "Index", id = "" } 
); 

によって処理することができるDefault.aspxの

HttpContext.Current.RewritePath(Request.ApplicationPath, false); 
IHttpHandler httpHandler = new MvcHttpHandler(); 
httpHandler.ProcessRequest(HttpContext.Current); 

のページの読み込みに次のように入れてこれは、ルート要求を書き換えによって扱わ上記の地図ルート。

ところで、実際にMVCテンプレートプロジェクトからコードを見つけることができます。

3

IIS7統合モードでホスティングしている場合は、default.aspxを削除することをお勧めします。私が理解しているように、IIS6とIIS7のクラシックモードでは、ライセンス認証が必要です。

0

私はオプション#1が最も簡単だと思います。私はおそらく移動するか、代替手段を見つける強い理由を見つけるまでそれに固執するでしょう。デフォルトのテンプレートでは、この方法が使用されます。

[更新]キャントンは私にそれを打つ

関連する問題