我已经创建了一个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,那么路线是什么以及如何重定向到外部网站。
答案 0 :(得分: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));
}
}
我希望你明白了。