随笔 - 35  文章 - 1 评论 - 94 trackbacks - 8



与我联系

搜索

 

常用链接

留言簿(6)

我参与的团队

随笔档案(35)

文章档案(1)

.NET英文资料

.NET中文资料

其他博客

最新随笔

积分与排名

  • 积分 - 43360
  • 排名 - 1063

最新评论

阅读排行榜

评论排行榜

前言

本示例用于练习使用Atlas实现ajax,所要做的是一个搜索页面,用到类Google 提供的WebService,关于google api 的获取以及注册方面的请参考使用C#调用GoogleApi一文。关于Atlas的获得请参考Ajax&atlas()调用Webservice

 

步骤

l         打开vs2005,使用atlas模板新建一个项目。在Default.aspx的源代码中在第一行的<%@ Page Language="C#" %>中添加属性Title=” Google Search”

l         将下载的the Google Web APIs Developer's Kit中的GoogleSearch.wsdl文件放入本地的服务器上,然后在VS中右键点击资源管理器中的引用,再选择添加Web引用,然后输入GoogleSearch.wsdl文件在本机服务器上的地址http://localhost/GoogleSearch.wsdl,更改Web引用名为GoogleSearch后,点击添加引用后返回。

l         添加对ajax.net的程序集AjaxPro.dll的引用,然后修改web.config文件,在其中添加如下内容:

<system.web>
<httpHandlers>
            
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
        
</httpHandlers>
</system.web>

l         然后新建一个用于存查询结果的类Result.cs,代码如下:

[Serializable]
public class Result
{
    
public Result() { }
    
private string title;
    
private string summer;
    
private string url;
    
public string Title
    
{
        
get return this.title; }
        
set this.title = value; }
    }

    
public string Summer
    
{
        
get return this.summer; }
        
set this.summer = value; }

    }

    
public string Url
    
{
        
get return this.url; }
        
set this.url = value; }
    }

    
public Result(string title, string summer, string url)
    
{
        
this.title = title;
        
this.summer = summer;
        
this.url = url;
    }

}

l         然后新建一个webForm,然后将其代码文件修改为如下内容:

public partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        AjaxPro.Utility.RegisterTypeForAjax(
typeof(_Default));//注册自定义类型
        AjaxPro.Utility.RegisterTypeForAjax(typeof(Result));
    }

 
    [AjaxPro.AjaxMethod]
    
public Result GetetResult(string s)//AjaxPro能识别的方法都要标记为[AjaxPro.AjaxMethod]
    {
        localhost.GoogleSearchService service 
= new localhost.GoogleSearchService();
        localhost.GoogleSearchResult result 
= service.doGoogleSearch("NGYfW7dQFHKshnXPwvctLsaipk03YK2x", s, 010true""true"""""");
        localhost.ResultElement[] re 
= result.resultElements;
        Result res 
= new Result(re[0].title,re[0].summary,re[0].URL);       
        
return res;
    }

    
}

l         最后回到webForm的源代码页面,进行客户端的处理。关键代码如下:

<input id="Text3" type="text" />
    
<input id="Button3" type="button" value="button" language="javascript" onclick="result(document.getElementById('Text3').value)" /></div>
    
        
   
<br />
    搜索结果:
<br />
    
<hr />
    
<table style="width: 333px">
        
<tr>
            
<td id="Title">
            
</td>
            
<td>
            
</td>
            
<td>
            
</td>
        
</tr>
        
<tr>
            
<td colspan="3" id="Url">
            
</td>
        
</tr>
        
<tr>
            
<td colspan="3" id="Summer">
            
</td>
        
</tr>
    
</table>
    
<span id="result">
        
    
</span>
    
</form>
<script type="text/javascript">


function result(result) 
{
     
var title=document.getElementById("Title");
     
var url=document.getElementById("Url");
     
var summer=document.getElementById("Summer");
     
var ds=_Default.GetetResult(result).value

if (typeof(ds) == "object")
title.innerHTML
=ds.Title;
url.innerHTML
=ds.Url;
summer.innerHTML
=ds.Summer;

}

}


</script>

这样基本就完成了,启动后就能看见效果了。

另本人在vs2005下使用magicajax 0.3.0时,按网上说明对配置文件进行了修改,但是不知为什么,总是报未将对象引用设置为对象实例的错,下面是截图,望高手指点。

 

Unhandled Execution Error 
Object reference not set to an instance of an object.
  at MagicAjax.AjaxCallHelper.GetPageHiddenDictionary(Page page, String fieldName)
  at MagicAjax.AjaxCallHelper.Page_PreRender(Object sender, EventArgs e)
  at System.Web.UI.Control.OnPreRender(EventArgs e)
  at System.Web.UI.Control.PreRenderRecursiveInternal()
  at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 0.00196226056663626 0.001046 


 

posted on 2006-03-05 19:19 圣炎¢天乐 阅读(2317) 评论(4)  编辑 收藏 网摘

FeedBack:
#1楼  2006-03-14 01:13 疯狂人类 ' fkrl      
到底是用 atlas 还是 ajax.net ?
  回复  引用  查看    
#2楼 [楼主] 2006-03-15 22:18 圣炎¢天乐      
另关于magicajax 0.3.0报未将对象引用设置为对象实例的错的问题是因为版本不对,下for 。.net 2.0版就没问题了。
  回复  引用  查看    
#3楼  2006-10-27 23:34 刚刚      
你用的不是Atlas而是Ajax.net
  回复  引用  查看    
#4楼  2008-01-03 10:55 szhangfu [未注册用户]
谢谢2楼 ,

  回复  引用    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: