2011-12-26 12 views
1

をリダイレクト飛ぶ。このwww.lmenaria.com/site1Asp.net MVCと今、私は、XMLに基づいて、いくつかのルートを追加したい、私が上で動作すること、それに基づいてアクションを作成する必要はありません、私はMVCアプリケーション、その作業罰金を作成している外部サイトへの

すなわち はwww.site2.com www.lmenaria.com/site3にリダイレクトされますwww.site1.com www.lmenaria.com/site2これにリダイレクトされます...これはwww.site3.com

アクションなしサイト1、サイト2、site3のlmenaric.omにリダイレクトされますので、どのようなルートになりますし、私は外部のサイトにどのようにリダイレクトすることができます。

答えて

2

あなただけのワンアクションで、コントローラ上でこれを行うことができますが、あなたが同じアクションにすべての要求をルーティングすることになりますO/Wそのためのルート制約を必要としています。ここではサンプルです:先頭にこのルート入れ

routes.MapRoute(
    "RedirectSiteRoute", 
    "{site}", 
    new { controller = "SiteRouter", action = "Route" }, 
    new { site = new SiteRouteConstraint() } 
) 

あなたルート制約は次のようになります。

public class SiteRouteConstraint : IRouteConstraint { 

    public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { 

     string[] allowedSites = new[] { "site1", "site2", "site3" }; 

     return 
      allowedSites.Any(x => x == values[parameterName].ToString()); 

    } 
} 

を、私は許すのサイトのためにそこにダミーのロジックを置くが、どのようにそのデータはあなた次第です。

コントローラのアクション:

public class SiteRouterController : Controller { 

    public ActionResult Route(string site) { 

     return Redirect(string.Format("www.{0}.com", site)); 
    } 
} 

私はあなたのアイデアを得たいと考えています。

+0

感謝。私はそれを実装します。 – LLM

関連する問題