2011-10-07 52 views
0

我有一個網站有兩個域指向相同的內容。我們稱他們爲www.domainA.com和www.domainB.com,其中www.domainA.com/Page與www.domainB.com/Page相同。ASP .NET MVC - 更改URL.Action使用的域名?

網站上的每個頁面都有許多通用導航鏈接(以及其他),這些鏈接是使用Url.Action和Html.ActionLink調用混合構建的。生成的網址是基於當前網域的。由於www.domainA.com是主要域名,我希望www.domainB.com生成的任何鏈接都基於www.domainA.com。

這可以集中完成,而不是繞過整個網站並對其進行硬編碼嗎?

謝謝你,艾倫

回答

1

我結束了使用的解決方案here指示IIS重寫請求我舊域名。

希望這可以幫助其他人有相同的要求。

Alan

0

您可以通過具有自定義路由對象,從System.Web.Routing.Route繼承解決這個問題。

例如:

public class MultipleDomainRoute : System.Web.Routing.Route 
{ 
    // ... 

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
    { 
     VirtualPathData path = base.GetVirtualPath(requestContext, values); 

     if (requestContext.Url.Host == "domain2.com") { 
      path.VirtualPath = "http://domain1.com" + path.VirtualPath; 
     } 

     return path; 
    } 
} 

然後在您的Global.asax的,在那裏您註冊路由使用:

routes.Add(new MultipleDomainRoute(/* args */)); 
+0

感謝Jan.這看起來像我需要的東西。但是,我需要實現一個構造函數。最小構造函數使用url模式和一個IRouteHandler實例。我需要自己實現一個IRouteHandler嗎? –

+0

您可以將構造函數重定向回基類。在這裏看到一個例子:http://coderjournal.com/2008/03/force-mvc-route-url-lowercase/。 –