2011-12-26 86 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

你可以在控制器上只用一个动作来做到这一点,但是你需要一个路由约束来处理那个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 2011-12-26 10:53:40