关于动态更改母版页的初学ASP.NET C#问题

时间:2010-09-11 10:44:12

标签: c# asp.net

好的,这就是......您获取用户的IP地址,并根据他/她的国家/地区将用户重定向到特定的网页。现在,如何动态更改母版页?这就是我重定向用户的方式: -

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

那么如何查看用户被重定向到哪个站点?现在如何应用特定的母版页,用户已被重定向?

我只是想知道如何去做。

[编辑]请检查下面的代码块。如何获取用户已重定向到的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";
        }
    }

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:0)

听起来你没有重定向到另一个网站,只是将它们发送到一个像“language = en”这样的查询字符串的页面。如果是这样,那么您需要使用Request.QueryString获取它并将其附加到基本母版页名称。