你可以在控制器上只用一个动作来做到这一点,但是你需要一个路由约束来处理那个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));
}
}
我希望你有这个想法。
谢谢。我会执行它。 – LLM 2011-12-26 10:53:40