首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET MVC中的路由问题

.NET MVC中的路由问题
EN

Stack Overflow用户
提问于 2012-05-16 11:15:12
回答 1查看 885关注 0票数 1

可能重复:

How to get RouteData by URL?

代码语言:javascript
复制
public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var url = httpContext.Request.Headers["HOST"];
            var index = url.IndexOf(".");

            if (index < 0)
                return null;

            var subDomain = url.Substring(0, index);

            if (subDomain != "www" && subDomain != "m")
            {
                var routeData = new RouteData(this, new MvcRouteHandler());
                    routeData.Values.Add("controller", "Business"); 
                    routeData.Values.Add("action", "Display"); 
                    routeData.Values.Add("id", subDomain);
                return routeData;
            }

            if (subDomain == "m")
            {
                var routeData = new RouteData(this, new MvcRouteHandler());
                routeData.Values.Add("controller", "Mobile"); 
                routeData.Values.Add("action", "Index"); 

                return routeData;
            }

            return null;
        }

我的问题是,当我访问xyz.mydomain.com时,它总是被重新路由到xyz.mydomain.com/Business/Display/xyz。这使我无法进入xyz.mydomain.com/Overview,因为它正在拾取子域并重定向。

我尝试过使用if语句来确定是否指定了控制器,但似乎没有任何东西工作。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 23:55:56

万一其他人需要答案这是我的解决方案..。

如果您只需要一个控制器,那么substrings.Length >= 3是一个操作,所以改为2:

代码语言:javascript
复制
public override RouteData GetRouteData(HttpContextBase httpContext)
            {
                var host = httpContext.Request.Headers["HOST"];
                var url = httpContext.Request.RawUrl;
                Regex regex = new Regex("/");
                string[] substrings = regex.Split(url);
                if (substrings.Length >= 3)
                {
                    return null;
                }
                var index = host.IndexOf(".");
                if (index < 0)
                {
                    return null;
                }

                var subDomain = host.Substring(0, index);

                if (subDomain != "www" && subDomain != "m")
                {
                    var routeData = new RouteData(this, new MvcRouteHandler());
                        routeData.Values.Add("controller", "Business"); //Goes to the User1Controller class
                        routeData.Values.Add("action", "Display"); //Goes to the Index action on the User1Controller
                        routeData.Values.Add("id", subDomain);
                    return routeData;
                }

                if (subDomain == "m")
                {
                    var routeData = new RouteData(this, new MvcRouteHandler());
                    routeData.Values.Add("controller", "Mobile"); //Goes to the User2Controller class
                    routeData.Values.Add("action", "Index"); //Goes to the Index action on the User2Controller

                    return routeData;
                }
                return null;
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10617397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档