2016-12-01 5 views
2

RedirectToRoute()メソッドが動作しないのはなぜかと困惑しています。私はRouteConfig.csは、私は次の値などでRedirectToRoute()を呼び出していますアクションメソッドでは今、約が呼び出さなっているとアクションこの構成私のデフォルトのコントローラホームにこのMVCでRedirectToRoute( "routeName")を使用するには?

routes.MapRoute(
    "pattern1", 
    "{action}", 
    new { controller = "Home", action = "About" } 
); 

routes.MapRoute(
    "pattern2", 
    "{controller}/{action}/{id}", 
    new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
); 

ようなファイル持っていますこの

public ActionResult Index() 
{ 
    return View(); 
} 
public ActionResult About() 
{ 
    return RedirectToRoute("pattern2"); 
} 

なぜRedirectToRouteは()

答えて

3

はこれを試してみてください管理者/ indexアクションを呼び出すされていません。

RedirectToAction()メソッドを使用することもできます。より直感的です。

+0

ええ、私はこの過負荷を使用する方法を知っていますが、私は経路の名前を述べる過負荷を使用する方法を学びようとしています。どのようにRedirectToRoute(文字列RouteName)を使用するのですか? –

1

これは、定義したルートのためです。 RedirectToRoute()は、定義したルートにリダイレクトします。 "pattern2"のために定義したURLは "{controller}/{action}/{id}"です。 routeNameだけを受け入れるオーバーロードを使用する場合は、RouteConfigでURLを明示的に定義する必要があります。例:

routes.MapRoute(
    "pattern2", 
    "Admin/Index", 
    new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
); 

明示的にURLを定義したくない場合は、routeValuesオブジェクトを受け入れRedirectToRouteの異なるオーバーロード()を使用する必要があります。

+0

なぜ私はMapRouteメソッド()に言及したデフォルトのコントローラとアクションに私を連れていかないのですか? Admin/Indexを定義する必要がある場合は、静的な値になり、RedirectToRoute()の目的は何か、私は代わりにredirecToActionを使用することができます。私はそれを利用することができるようにこのメソッドの正確なユーザーを知りたいです..ありがとう –

関連する問題