2009-08-25 10 views
2

domain.com/usernameのようなマッピング方法を教えてください。問題は、MVCルーティングが、コントローラがマッピング要求をどのように処理すべきかを判断するためにコントローラを探すことだと思います。asp.net mvc url routing

私はASP.NET MVCをかなり新しくしています。

しかし、これまでのチュートリアルに基づいて、ルーティングメカニズムはかなり固いようです。

答えて

6

これは実際には非常に柔軟性があります。あなたはそれがもう少し経験を積んだことでかなり強力だと思います。ここでは、あなたがやりたいことができます方法は次のとおりです。

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

は、これがデフォルトのコントローラ(「ホーム」)と、デフォルトのアクションメソッド(「インデックス」)を選択し、それを「」に設定されているユーザ名パラメータを(渡しますデフォルトで)。

このルートでは注意してください。実際には想像できるどんなURLにも一致します。マップに追加する最後のルートである必要があります。そのため、他のルートでは最初にURLにチャンスがあります。

1

wompに追加するには - 私は(しゃれが意図した)このルートを行くだろう:

routes.MapRoute("MyRoute", 
       "user/{username}", 
       new { controller = "User", action = "Index", username = "" }); 

これは、にURLをマッピングします:} domain.com/user/{username

をそして、あなたは常に変更することができますコントローラとアクションは、あなたが欲しいものにします。私はそのような何かを持っている場合は

1
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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


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

、その後、私はmydomain.com/useridのようなものだけでなく、mydomain.com/home/index/1を指すことができています。しかし、mydomain.comに行くと、useridのために使用されるページに行きます。最初のルートルールと一致し、IDが ""だと思うので意味がありますが、その動作をどうやって止めるのですか?

+0

ルートの順序は、チェックされた順序です。したがって、最も重要ではないものが最後に来るべきです。それはMyRouteと呼ばれるものです。デフォルトルートの下に移動します。 – BerggreenDK