2010-12-16 17 views
0

なぜん:ASP.NET MVCルーティングの問題?

ユーザ/ユーザ

:しかし

<%= Html.ActionLinkForAreas<BlaController>(c => c.Index(1), "My Bla Di Bla")%> 

このようなURL:

のBla

<%= Html.ActionLinkForAreas<UsersController>(c => c.User(), "My Details") %> 

がこれを含むURLを生成します0123これよりもむしろ

:つまり

のBla /インデックス

はなぜ「飲み込ま」indexアクションです。これは次のようなルーティングと関係がありますか。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

routes.RouteExistingFiles = true; 
routes.IgnoreRoute("Content/{*wildcard}"); 
routes.IgnoreRoute("Scripts/{*wildcard}"); 

routes.MapRoute(
"Default",            // Route name 
"{controller}/{action}/{id}",       // URL with parameters 
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

また別の理由がありますか?この動作を変更するにはどうすればよいですか?ありがとう。

幸運を祈り、あなたのデフォルトのアクションとしてIndexを指定した

クリスチャン

答えて

3

Becaues:

routes.MapRoute(
    "Default",            // Route name 
    "{controller}/{action}/{id}",       // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

action = "Index"一部。これはデフォルトのアクションなので、URLを作成するたびに「インデックス」部分は省略されます。これはあなたに素敵な簡潔なURLを付ける機会を与えます。ちなみに、コントローラ自体にも同じルールが適用されます。 "ホーム"コントローラにルーティングする場合、へのURLはになりますので、 "/"のような生のベースURLを持つことができます。

+0

ありがとうございました。私は、私のMVC contribグリッドがインデックスビットを呑み込むので、これを求めています。 http://stackoverflow.com/questions/4452031/mvc-contrib-pagerも参照してください - 私の質問に3番目のコメント。私は1つのオプションがインデックスアクションにリダイレクトし、私のアクションリンクなどのためのインデックス以外のいくつかのアクションを使用すると思います。 – cs0815

+0

@csetzkorn、ポケベルと何らかの矛盾があるかどうかはわかりません。しかし、あなたは確かにデフォルトのアクションを使用する必要はありません。あなたは 'action =" Index "の部分を喜んで削除することができ、あなたのサイトはうまく動作します。あなたのURLのほんの一部は、アクション名を常に*含む*ため、そうでない場合より長くなります。 –

+0

また、(長いインデックスURLを使用する)1つのコントローラに例外を追加できますか?ありがとう! – cs0815

関連する問題