ASP.NET初学者问题:关于使用某些类库需要帮助

时间:2010-09-10 11:36:28

标签: c# asp.net

我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        String userHost = Request.UserHostName
    }

这是获取IP地址好的,但现在我想知道访问者所在的国家/地区并使用该国家/地区名称来相应地将访问者重定向到某个网页。

我遇到过这个图书馆,但不知道如何在项目中使用它。其实我这样做,但我不确定,所以我在问。

http://ipaddressextensions.codeplex.com/

当我从上面下载时,ZIP文件夹有一个DLL文件和一个XML文件。现在,我对这两个怎么办?就像在项目中包含一样。然后我在代码文件中键入什么内容?

如下所示。

if (countryName=="France")
{
    response.redirect("www.mysite.fr")
}
else
    if(countryName=="India")
    {
        response.redirect("www.mysite.in")
    }

依旧......

我该如何解决?我还需要为所有国家/地区键入多个if块。如何缩短此代码?

3 个答案:

答案 0 :(得分:3)

要缩短代码,请将所有国家/地区放入字典中。

Dictionary<string,string>  dict;

public void Init(){
    dict = new Dictionary<string,string>();
    dict["India"] = "www.mysite.in";
    dict["France"] = "www.mysite.fr";
}

public string GetPage(string country){
    string result = dict["Default"];

    if(dict.ContainsKey(theKey)){
        result  = dict[theKey];
    }
    return result;
}

只需添加引用,然后添加“using statement”,API即可使用。

您甚至可以更改以上内容以接收IP地址。

首先将引用和下面的using添加到您的代码中。

using WorldDomination.Net;

public string GetPage(string ipAddress){
    string result = null;
    IPAddress ipAddress;
    if (IPAddress.TryParse(userHostIpAddress, out ipAddress))
    {
        string fullNameKey= ipAddress.Country();
        //Or you could use two letter code
        //string twoLetterKey = ipAddress.Iso3166TwoLetterCode();
        if(dict.ContainsKey(theKey)){
             result = dict[fullNameKey];
        }
    }
    else
    {
        result = dict["Default"];
    }
    return result;
}

答案 1 :(得分:1)

您需要将下载的库(dll)的引用添加到项目中。有关添加引用的详细信息,请参阅http://msdn.microsoft.com/en-us/library/7314433t%28v=VS.90%29.aspx

“您在代码文件中键入的内容”将完全取决于库本身。如果您不确定如何实现库的功能,我建议您查看CodePlex页面上托管的source code repository中包含的测试项目。它应该显示您需要调用的方法。运气好的话,类和方法结构都是不言自明的。

如果您不想使用if() { } else if() { }阻止,则可以选择使用switch statement

switch(countryName) {
     case "India":
        // do something
        break;
    case "France":
        // do something
        break;
    case "Japan":
        // do something
        break;
    case "Germany":
        // do something
        break;
    default:
        // do something
        break;
}

答案 2 :(得分:0)

http://ipaddressextensions.codeplex.com/网站提供了查找国家/地区的示例代码。找到该国家/地区后,根据国家/地区将其与子域名进行比较,然后重定向。 `使用System.Net;      使用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
  }    `