2009-04-30 16 views
7

私のアプリケーションは、主にMVCセクションを追加するASP.NETアプリケーションです。MVCセクションのASP.NETプロジェクトでDefault.aspxが実行されない

My Default.aspx(コードビハインドなし)ページには、StartPage.aspxページへの単純なResponse.Redirectがありますが、何らかの理由でMVCが引き継ぎ、StartPage.aspxページに到達しません。代わりに、global.asax.csページ(アルバム)に登録した登録済みのルートである私の最初の唯一のMVCセクションにルーティングされます。

MVCに自分の要求をルート "/"に残して、私のIIS 7のデフォルトドキュメント...この場合Default.aspxにする方法はありますか?

これは私のRegisterRoutesにあるものである:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Albums","{controller}/{action}/{id}", 
    new { controller = "Albums", action = "Index", id = "" }); 
+0

MVCを破棄したいですか-View-Controller)のルールは?私はすべてのビューがビューフォルダの下に含まれている必要がありますと思う。 –

+1

これは古典的なasp.netアプリです。私は今それをレガシーアプリと呼ぶことができると思う;-)すべてが同じままだから。私はちょうどMVCを追加し始めているし、デフォルトのページはそれらの一つではありません。 – Mouffette

答えて

7

あなたがそこにあなたの第2の経路からデフォルトのコントローラを削除した場合、それはもはや「/」にマッチしませんとルーティングのための要求を無視します「/」あなたの問題を解決する必要があることを

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Albums","{controller}/{action}/{id}", 
    new { action = "Index", id = "" }); 

:だから、

を処理するために、通常のASP.Netパイプラインのためにそれらを残して、あなたにルートを変更!

+0

あなたの提案はうまくいきましたが、Alconjaのようなdefault.aspxページを無視する方がいいかどうか疑問です。将来、MVCルートを増やすと、デフォルトのコントローラを指定することができなくなるか、{コントローラ}を指定することを誤解していますか?私はそれが "アルバム"に特有だと思ったが、わからない。ありがとう。 – Mouffette

+0

Alconjaのソリューションが実際に "/"のケースで動作するかどうかはわかりません。到着するURLは "/Default.aspx"ではなく "/"です。デフォルト文書がいつ適用されるかによって異なります。デフォルトのコントローラー値を指定する唯一の理由は、「/」への要求がそのコントローラーにルーティングされるためですが、Default.aspxページで「/」への要求を処理する場合は、デフォルトのコントローラー –

0

あなたはこのようにはDefault.aspxを無視するようにMVCを言うことができる:

routes.IgnoreRoute("Default.aspx"); 
1

それが既定のドキュメントであるため、Default.aspxページは、IISによって提供されています。 MVCは default.aspxページ(例: "http://foo.com/default.aspx")に対するリクエストであることがわかった場合、default.aspxページで要求を処理させます。このシナリオ( "http://foo.com")では、デフォルトルートの前にこれを追加して、あなたの目標を達成することはできません。

// ignore "/"  
routes.IgnoreRoute(""); 

// default route 
routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", 
         id = UrlParameter.Optional } // Parameter defaults 
      ); 
関連する問題