2011-05-01 16 views
0

私はアクションが<mysite>/Home/ContactASP.NET MVC 3.0のURL Rewritng

がで行うことを可能にされるのと同じ結果を得るために<mysite>/Contactを入力して

<mysite>/Home/Contact 

は、私ができるようにしたいホームコントローラでの接触と呼ばれていmvc 3.0ルートまたはRouteMagic?

現在、私はそのようにこれを達成しようとしないのですが、ない運:

カスタムルート:

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

RouteMagic:

var route = routes.MapRoute("new", "Contact"); 
      routes.Redirect(r => r.MapRoute("old", "Home/Contact")) 
       .To(route); 

更新

[OK]をカスタムルート最初に定義する必要があります。現在は(カスタムルートの場合)動作していますが、そこには新しい質問が表示されましたwhy route magic returning error

Server Error in '/' Application. 
Value cannot be null or empty. 
Parameter name: controllerName 

答えて

1

ルートを定義する際に(それは同様マッチしますので)あなたの新しいルートがデフォルトルートの前に発生していることを確認します。

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

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

ありがとう、私はそれについて考えていたが、少し怠惰だった。 – Joper

+0

@ Joper - デフォルトルートは、特定のルートが最初に一致するように追加された最後のルートである必要があります。 – tvanfosson

+0

あなたは、RouteMagicがそのような場合にエラー '値を返すことがなぜ空でも空でもないことがある理由を知っているかもしれません。 パラメータ名:controllerName ' – Joper