1

我已经创建了一个 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,所以路线是什么以及如何重定向到外部站点。

4

1 回答 1

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));
    }
}

我希望你明白了。

于 2011-12-26T09:44:26.443 回答