2010-09-11 71 views
0

好的,这里是...您可以获取用户的IP地址,并根据他/她的国家/地区将用户重定向到特定的网页。现在,你如何动态改变主页面?这是怎么了将用户重定向: -初学ASP.NET C#关于动态更改母版页的问题

Geolocation error with IP address 127.0.0.1

它不象用户点击一些按钮或东西,然后你改变了母版页。我希望在用户重定向时更改它,那么我该如何去做呢?

public partial class testClass: System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (redirected to site1) 
     { 
       Use this master page1 
     } 
     else 
      if (redirected to site2) 
      { 
       Use this master page2 
      } 
    } 
} 

那么,如何检查用户被重定向到的SITE?现在如何应用特定的母版页,现在用户已被重定向?

我只是需要一个想法如何去做。

[编辑]请检查下面的代码块。如何获取用户重定向到的URL?实际上我只需要“iso3166TwoLetterCode”变量的值(请参阅我之前问题的链接),并基于此将更改母版页。我无法弄清楚如何获取这个值,或者甚至在我的testClass中使用那个类(有这个变量)。

protected void Page_PreInit(object sender, EventArgs e) 
    { 
     if (user Has been redirected to www.site.in) 
     { 
      this.MasterPageFile = "master1.master"; 
     } 

     if (user Has been redirected to www.site.fr) 
     { 
      this.MasterPageFile = "master2.master"; 
     } 
    } 

回答

1

要了解这个国家的两个字母的代码,做什么,从这个http://ipaddressextensions.codeplex.com/示例代码:

using System.Net; 
using WorldDomination.Net; 

string userHostIpAddress = "203.1.2.3"; 
IPAddress ipAddress; 
if (IPAddress.TryParse(userHostIpAddress, out ipAddress)) 
{ 
    string country = ipAddress.Country(); // return value: UNITED STATES 
    string iso3166TwoLetterCode = ipAddress.Iso3166TwoLetterCode(); // return value: US 
} 

然后你可以尝试这样的事情来改变主:

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    this.MasterPageFile = "NewMasterSite.master"; 
} 
+0

你能否检查我刚添加的附加细节? thnx – Serenity 2010-09-11 11:13:56

+0

我以为你已经实现了这一点。 – Philipp 2010-09-11 12:03:30

+0

想出了如何从URL.got帮助这里获取代码http://stackoverflow.com/questions/3698196/how-do-i-check-for-a--a-urls-top-level-domain-in- ASP-网-C – Serenity 2010-09-17 07:10:10

0

这听起来像你不是重定向到另一个站点,只需将它们发送到一个页面中包含“语言= EN”查询字符串。如果是这样,那么你需要使用Request.QueryString来获取它并将其附加到基本主页面名称。

+0

OKK ..所以如果它是一个网页..我喜欢取URL(eg.www.mysite.in),然后使用“Request.QueryString”..检查它后,我该如何更改母版页? – Serenity 2010-09-11 10:58:20

+0

根据你的例子,你根本没有使用查询字符串。相反,您可能在虚拟服务器上设置了多个子域。在这种情况下,请尝试'Request.Uri'。如果这不起作用,'Request.ServerVariables [“Host”]'会。 – 2010-09-11 11:35:19

+0

允许我纠正自己:HTTP头被称为“主机”,但您必须通过“HTTP_HOST”在此处引用它。或者,我认为“网址”会做你想做的。 – 2010-09-11 11:43:00