Asp.net MVC и перенаправить на внешний сайт
Я создал приложение 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 ответ
Вы можете сделать это на контроллере только с одним действием, но для этого вам нужно ограничение маршрута, в результате все запросы будут перенаправлены на одно и то же действие. Вот образец:
Поместите этот маршрут вверху:
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));
}
}
Я надеюсь, у вас есть идея.