Asp.net MVC и перенаправить на внешний сайт - PullRequest
1 голос
/ 26 декабря 2011

Я создал приложение 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, так какой будет маршрут и как я могу перенаправить на внешний сайт.

1 Ответ

2 голосов
/ 26 декабря 2011

Вы можете сделать это на контроллере только с одним действием, но вам нужно ограничение маршрута, чтобы в конечном итоге все запросы были направлены на одно и то же действие. Вот образец:

Поставьте этот маршрут вверху:

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));
    }
}

Надеюсь, у вас есть идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...