上篇地址:atlas学习实践系列之二(AutoCompleteExtender篇)
atlas调用本地web services那是相当的简单,调用远程的也不难,看了dflying chen的几篇文章也学了不少内容,尤其是yahoo天气预报的例子更是受益匪浅。自己动手实践一把。
目标:实现IP地址查询功能.输入IP地址,获得该IP所在的国家和城市。
难点:1)如何设置调用远程服务的asbx文件(有关配置支持asbx的方法可以见dflying chen 的介绍)
难点2):如何动态获得请求的客户端IP,然后在js中使用。
首先,建立一个网络服务,用于查询IP,IP地址信息库是一个mdb文件,相关代码为:
![](/Images/OutliningIndicators/ContractedBlock.gif)
注意,该web services必须支持HTTP-Get方式访问,故需要如下web.config配置
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
网络服务建好了,下面就是调用了。
建立一个新的网站,首先建立一个IPServices.asbx文件,该文件是将远程服务映射到本地的配置文件,有关信息见dflying chen的文章。文件内容如下:
![](/Images/OutliningIndicators/ContractedBlock.gif)
调用页面为:
![](/Images/OutliningIndicators/ContractedBlock.gif)
因为javscript不容易获得本机IP地址,故在后台注册了脚本,解决第二个难点问题 :后台代码
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Web;
5
using System.Web.Security;
6
using System.Web.UI;
7
using System.Web.UI.WebControls;
8
using System.Web.UI.WebControls.WebParts;
9
using System.Web.UI.HtmlControls;
10
using System.Text;
11![](/Images/OutliningIndicators/None.gif)
12
public partial class _Default : System.Web.UI.Page
13
{
14
protected void Page_Load(object sender, EventArgs e)
15
{
16
StringBuilder sb = new StringBuilder();
17
string ip = Request.UserHostAddress;
18
sb.Append("<script language=\"javascript\" type=\"text/javascript\">");
19
sb.Append(" function getIpAddress(){var ip='"+ip+"';n2dog.IpServices.GetIPAddress({'ip':ip},onGetCompleted);}");
20
sb.Append("</script>");
21
string script = sb.ToString();
22
Page.RegisterClientScriptBlock("IpServices", script);
23![](/Images/OutliningIndicators/InBlock.gif)
24
}
25
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这样目标即可实现,效果图:
上篇地址:atlas学习实践系列之二(AutoCompleteExtender篇)
再次感谢dflying chen的系列文章对我的启发和指导。