我有一个启用了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地址并提供国家名称的在线服务,而不是在我的服务器上安装数据库。谢谢!
答案 0 :(得分:1)
此URL以JSON格式显示ip和country。
答案 1 :(得分:0)
我会给你一些解决问题的技巧,而不是给你完整的解决方案: - )
首先,如果您通过路由器连接到互联网,则您的功能LocalIPAddress()
不会返回公共IP。尝试修改它以获得正确的IP。有很多方法可以做到这一点,但here's在SO处进行了很好的讨论,以便您获得一个想法。
其次,有许多免费的网络服务,您可以根据您的外部IP获取国家/地区详细信息。这是一个以JSON,XML或CSV格式返回国家/地区详细信息的服务。
然后,阅读此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;
}
}
}
希望这有帮助。