操作之间的重定向不正确

时间:2013-01-31 08:37:30

标签: asp.net-mvc asp.net-mvc-3 c#-4.0 asp.net-mvc-4 asp.net-mvc-routing

当用户想要转移到域之间的动作游戏时,我遇到了一些问题。 在本地版本中组织:

mysite.com/subdomain1/webpage/show?url=about
mysite.com/subdomain2/webpage/show?url=about

全局:

subdomain1.mysite.com/webpage/show?url=about
subdomain2.mysite.com/webpage/show?url=about

我想让用户每次都不进入主子域名。 例如: 当前页面 - subdomain1.mysite.com/webpage/show?url=about。 我想查看 subdomain2 类似的页面。 我将用户重定向到subdomain2.mysite.com/。 但我想重定向用户 - subdomain2.mysite.com/webpage/show?url=about 没有subdomain2.mysite.com的过渡

如何在ASP MVC和C#中做到这一点?

2 个答案:

答案 0 :(得分:1)

public static string ReplaceSubdomain(this HttpRequest request)
        {
            var urlReferrer = request.UrlReferrer.AbsoluteUri != null ? request.UrlReferrer.AbsoluteUri : string.Empty;
            // Get URl
            var url = request.Url.AbsoluteUri;
        #if DEBUG || APPS
            // Search local subdomain
            Regex child = new Regex(@"\b[0-9]?[.]?child[0-9]?");
            // if this request consist of subdomain
            if (child.IsMatch(urlReferrer) && child.IsMatch(url))
            {
                // select subdomain
                var matchUrlRef = child.Match(urlReferrer).ToString();
                var matchUrl = child.Match(url).ToString();
                // if subdomain are not equals
                if ((matchUrlRef != matchUrl))
                {
                    // single out link after local subdomain
                    var urlRefSub = urlReferrer.Remove(0, urlReferrer.IndexOf(matchUrlRef) + matchUrlRef.Length);
                    var urlSub = urlReferrer.Remove(0, url.IndexOf(matchUrl) + matchUrl.Length);
                    // validate link query after subdomain
                    // if different url query - replace subdomain
                    if (urlReferrer.Length > urlSub.Length)
                        return urlReferrer.Replace(urlRefSub, urlSub);
                }
            }
            return url;
        #else


            //  Check if before page are existsand subdomain are equls
            if (!SubDomainRoute.GetSubdomain(urlReferrer).Equals(SubDomainRoute.GetSubdomain(url)))   
                // if subdomain really exist for "child of clinic"
                if (SubDomainRoute.GetSubdomain(urlReferrer).Contains("child") 
                        && SubDomainRoute.GetSubdomain(url).Contains("child"))
                    return url.Replace(SubDomainRoute.GetSubdomain(url),
                                                           SubDomainRoute.GetSubdomain(urlReferrer));
            return request.Url.AbsoluteUri;
        #endif
        }

很抱歉,如果我分散您的注意力并花费您的时间 - 我自己找到了解决方案。

答案 1 :(得分:0)

如何在视图中创建链接(锚点)?如果使用ActionLink方法,则可以编写包装器方法,例如SubdomainActionLink,也可以这样做,但也插入" subdomain2"到href路径。如果你需要在代码隐藏中进行这样的重定向,只需获取当前的请求URL并替换子域号。