在ASP.NET Atlas中调用Web Service—直接在ASPX…
2008-02-22 09:35:20来源:互联网 阅读 ()
作者:Dflying Chen(http://dflying.cnblogs.com/)
前面的一系列的文章都是直接调用单独的一个Web Service,而在实际项目开发中,特别是在对现有的项目转换中,把页面中的逻辑再提取到专门的Web Service中往往会带来相当多的工作。Atlas充分考虑到了这一点,允许您将服务器端的public方法加上[WebMethod]属性以允许客户端JavaScript的直接调用。
想允许客户端直接调用定义在ASPX页面中的方法,您需要指定该方法为public,并且添加[WebMethod]属性,例如如下定义在ASPX文件中的服务器端方法:
<script runat="server">
[WebMethod]
public int AddInt(int int1, int int2)
{
return int1 int2;
}
</script>
在客户端,Atlas将为您Mashup出一个AddInt的JavaScript方法,存在于一个特殊的命名空间PageMethods中,这样您就可以通过PageMethods.AddInt()调用上面的方法了。
同时,将WebMethod定义到ASPX页面中,您还可以在该方法中访问一切页面上的服务器端控件的值和ViewState,并且整个页面的的生存周期将和传统的ASP.NET页面PostBack一样,诸如Page_Load等方法均会被调用,可以让我们对页面有更强的访问能力。不过这样也带来了性能上的折扣,因为每次调用Web Method的时候都会把页面上的ViewState和控件的值传回给服务器,并且服务器端处理整个页面的生存周期将要比仅仅处理一个纯粹的定义在ASMX中的Web Method要复杂的多。所以这里我推荐尽可能的使用纯粹的Web Service,请参考:在Atlas服务器端实现中推荐使用Web Service而不是Page Method。
下面来看一个实例,首先来定义在ASPX中的WebMethod,可以看到这里不单单求两个数的和,还访问了一个页面上的服务器端TextBox的值:
<script runat="server">
[WebMethod]
public string AddInt(int int1, int int2)
{
return (int1 int2).ToString() string.Format("\r\nAnd the Server TextBox's Text is '{0}'.", tbServer.Text);
}
</script>
然后是页面的ScriptManager,这里无需添加任何引用了: <atlas:ScriptManager ID="scriptManager" runat="server" />
然后两个用来输入加数的input以及用来触发服务器调用的input:
<input id="value1" type="text" value="1" />
<input id="value2" type="text" value="2" />
<input id="btnAdd" type="button" value="Add!" onclick="return btnAdd_onclick()" />
还有一个服务器端TextBox:
<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
最后是JavaScript调用,注意PageMethods这个内建的命名空间:
function btnAdd_onclick() {
PageMethods.AddInt(
$('value1').value,
$('value2').value,
OnComplete
);
}
function OnComplete(result)
{
alert(result);
}
浏览器中运行,输入两个加数,然后在Server端的TextBox中输入一些字符,点击Add,可以看到Server端的TextBox的值却是被访问到了:
这是Fiddler截获的网络传输,可以看到ViewState和TextBox都被传回了Server:
该实例程序的源代码可以在此下载:http://www.cnblogs.com/Files/dflying/WebMethodOnPage.zip
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:httpRuntime 一点经验
下一篇:ASP.NET实现匿名访问控制
- 在ASP.NET Atlas中调用Web Service 2009-05-12
- 在ASP.NET Atlas中调用Web Service—应用Cache减小服务器开 2008-02-22
- 在ASP.NET Atlas中调用Web Service——创建Mashup调用远端We 2008-02-22
- 在ASP.NET Atlas中调用Web Service—创建Mashup调用远端Web 2008-02-22
- 在ASP.NET Atlas中调用Web Service—批量调用以提高效率 2008-02-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash