1

私はmvcアプリケーションを作成しましたが、うまく動作しています.xmlに基づいていくつかのルートを追加したいのですが、それに基づいてアクションを作成したくありません。

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

アクションなし Site1、site2、site3 lmenaric.om では、ルートはどうなるか、どうすれば外部サイトにリダイレクトできますか。

4

1 に答える 1

2

これはコントローラーで 1 つのアクションだけで実行できますが、すべてのリクエストを同じアクションにルーティングすることになる 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));
    }
}

あなたがアイデアを得たことを願っています。

于 2011-12-26T09:44:26.443 に答える