Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > 在ASP.NET Atlas中调用Web Service——直接在ASPX页面上暴露Web Method
【标  题】:在ASP.NET Atlas中调用Web Service——直接在ASPX页面上暴露Web Method
【关键字】:ASP.NET,Atlas,Web,Service,ASPX,Web,Method
【来  源】:http://dflying.cnblogs.com/archive/2006/05/30/atlas_and_web_service__calling_page_method.html

在ASP.NET Atlas中调用Web Service——直接在ASPX页面上暴露Web Method

Your Ad Here 作者:Dflying Chenhttp://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出一个AddIntJavaScript方法,存在于一个特殊的命名空间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截获的网络传输,可以看到ViewStateTextBox都被传回了Server

该实例程序的源代码可以在此下载:http://www.cnblogs.com/Files/dflying/WebMethodOnPage.zip

Castle IOC容器实践之EnterpriseLibrary Configuration Facility:【上一篇】
WinForm中動態調用Webservice的問題:【下一篇】
【相关文章】
  • Atlas客户端类库、控件介绍(1)
  • 如何使用Ajax技术开发Web应用程序(1)
  • 如何使用Ajax技术开发Web应用程序(2)
  • webshell提权
  • OPENWEBMAIL配置文档
  • WEB服务的规划==>HTTPD安装/应用模块配置==>升级/维护等过程
  • [原创]Eclipse中Java Web开发环境的搭建------安装配置说明
  • 在ASP.NET Atlas中调用Web Service——应用Cache减小服务器开销
  • 在ASP.NET Atlas中调用Web Service——在页面加载时调用Web Service
  • asp.net 连接数据库基础的代码
  • 【随机文章】
  • NBearV3教程——MVP(Model/View/Presenter)篇
  • 诚信工作室
  • [转载]人工智能缩略语大全
  • Linux内核源码树的/Documentation/HOWTO
  • 龙芯软件开发(35)- USB协议深入分析 设备描述符配置包
  • JS正则表达式详解
  • 技术文章开版了
  • STRUCTS技术文章( JSP Framework - Struts介绍 )
  • 女王发话啦!(一篇不错的讨论)
  • 未来计算机
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.