以编程方式显示基于IP国家/地区的Div

时间:2014-11-01 00:46:07

标签: javascript c# html asp.net rest

我有一个启用了bootstrap的网站,有两个div DivOne和DivTwo。

如果这个国家是印度,我想展示DivTwo。如果这个国家不是印度,我想展示DivOne。

如何在ASP.NET/HTML/JavaScript中实现它?

这是我目前在C#中所拥有的:

public string LocalIPAddress()
 {
   IPHostEntry host;
   string localIP = "";
   host = Dns.GetHostEntry(Dns.GetHostName());
   foreach (IPAddress ip in host.AddressList)
   {
     if (ip.AddressFamily == AddressFamily.InterNetwork)
     {
       localIP = ip.ToString();
       break;
     }
   }
   return localIP;
 }

我也想在移动网站上运行相同的代码。

一个小小的补充。我宁愿选择一个带有IP地址并提供国家名称的在线服务,而不是在我的服务器上安装数据库。谢谢!

2 个答案:

答案 0 :(得分:1)

此URL以JSON格式显示ip和country。

http://api.hostip.info/get_json.php

答案 1 :(得分:0)

我会给你一些解决问题的技巧,而不是给你完整的解决方案: - )

首先,如果您通过路由器连接到互联网,则您的功能LocalIPAddress()不会返回公共IP。尝试修改它以获得正确的IP。有很多方法可以做到这一点,但here's在SO处进行了很好的讨论,以便您获得一个想法。

其次,有许多免费的网络服务,您可以根据您的外部IP获取国家/地区详细信息。这是一个以JSON,XML或CSV格式返回国家/地区详细信息的服务。

http://freegeoip.net/

然后,阅读此JSON(或您喜欢的任何其他格式)信息,并找出国家/地区名称。

现在,根据国家/地区名称显示首选DIV非常容易。这是你如何做到的。

您的标记应如下所示。请注意,这些div具有属性runat="server"。这意味着您已将这些HTML元素转换为服务器控件,以便您可以使用其ID在您的代码中访问它们。

<div id="DivOne" visible="false" runat="server">
        <p>This is DIV 1</p>
    </div>

    <div id="DivTwo" visible="false" runat="server">
        <p>This is DIV 2</p>
    </div>

现在在您的代码中执行此操作(我假设您已根据上述说明编写了GetCountryName()

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (GetCountryName().ToLower() == "india")
            {
                DivTwo.Visible = true;
            }
            else
            {
                DivOne.Visible = true;
            }
        }
    }

希望这有帮助。