【问题标题】:Asp.net MVC and redirect to External siteAsp.net MVC 并重定向到外部站点
【发布时间】:2012-01-27 21:26:23
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc redirect maproute


    【解决方案1】:

    您可以在控制器上仅使用一个操作执行此操作,但您需要一个路由约束,否则您最终会将所有请求路由到同一个操作。这是一个示例:

    把这条路线放在最上面:

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

    我希望你明白了。

    【讨论】:

      猜你喜欢
      • 2015-06-23
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2014-08-20
      • 2019-07-26
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多