2014-11-01 30 views
0

我有一個啓用了引導程序的網站兩個DivO DivOne和DivTwo。以編程方式顯示基於IP國家的Div

如果國家是印度,我想要顯示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

不能回答你的問題的整體,但在這裏是爲IP檢查的幾個服務: http://ipinfodb.com/ip_location_api.php http://www.geobytes.com/IpLocator.htm HTTP ://freegeoip.net/ http://www.hostip.info/use.html – HitMeWithYourBestShot 2014-11-01 01:03:09

+0

有免費的數據庫可以加載,但如果您打算將它們稱爲服務,大多數服務似乎需要每月或每年免費。 – 2014-11-01 01:19:20

+0

我準備爲一項服務付款。我想要即時訪問,如果你知道任何。謝謝。 – CuriousDev 2014-11-01 01:27:29

回答

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

希望這有助於。