2011-12-26 3 views
1

Я создал приложение mvc, его рабочий режим, теперь я хочу добавить некоторый маршрут на основе xml, я не хочу создавать действие на основе этого, которое будет работать на летать.Asp.net MVC и перенаправить на внешний сайт

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

ответ

2

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

Поместите этот маршрут на вершине:

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

Смежные вопросы