ASPNET AJAX RC1.0 学习笔记

本文介绍了如何使用ASP.NET AJAX创建支持AJAX的网站,包括页面设置、异常处理及调用WebService的方法。通过具体实例展示了ScriptManager和UpdatePanel的使用,并详细解释了异常处理流程和调用WebService的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一: Hello  AJAX 

新建一个ASP.NET AJAX-Enabled Web Site(在安装完ASPAJAXExtSetup.msi后才有该模板)

检查Default.aspx页面是否已经添加ScriptManager控件,该控件用来处理页面上所有组件以及页面部分更新,生成相应的客户端代理脚本以便能够在javaScript中访问WebService,所有需要支持AJAX页面都有且只有一个这样的控件,ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。如果页面上没有则从Ajax Extensions中拖一个ScriptManager控件过来。

然后再添加一个UpdatePanel过来,把需要Ajax特性的部分用UpdatePanel包含起来就可以了。

<%@ Page Language="C#" %>
<script  runat="server">
    protected 
void btnCallBack_Click(object sender, EventArgs e)
    
{
        lblMsg.Text 
= DateTime.Now.ToString();
    }

    
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>    
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>    
    
</div>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            
<ContentTemplate>
                
<asp:Label ID="lblMsg" runat="server" Text=""></asp:Label><br />
                
<asp:Button ID="btnCallBack" runat="server" OnClick="btnCallBack_Click" Text="点击我!" />
            
</ContentTemplate>
        
</asp:UpdatePanel>
    
</form>
</body>
</html>

二 异常处理

在页面回传时如果发生了异常AsyncPostBackError事件将被触发,错误信息的处理依赖于AllowCustomErrors属性、AsyncPostBackErrorMessage属性和Web.config中的<customErrors>配置区。

需要注意的是使用了ASP.NET AJAX 语法的语句不能写在Head里面,否则将会出现“Sys not defined ”之类的错误。  

<%@ Page Language="C#" %>
<script runat="server">
    protected 
void ErrorProcessClick_Handler(object sender, EventArgs e)
    
{
        
throw new ArgumentException();
    }

    protected 
void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
    
{
        ScriptManager1.AsyncPostBackErrorMessage 
= "异常信息为:" + e.Exception.Message;
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    
<title>PageRequestManager endRequestEventArgs Example</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">
            
</asp:ScriptManager>
            
<script type="text/javascript" language="javascript">
                
var messageElem="AlertMessage";
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
                
function EndRequestHandler(sender, args)
                
{
                   
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
                   
{
                       
var errorMessage = args.get_error().message
                       args.set_errorHandled(
true);
                       $get(messageElem).innerHTML 
= '"' + 
                                errorMessage 
+ '';
                   }

                }

            
</script>
            
<asp:UpdatePanel runat="Server" UpdateMode="Conditional" ID="UpdatePanel1">
                
<ContentTemplate>
                    
<asp:Panel ID="Panel1" runat="server" GroupingText="Update Panel">
                        
<asp:Label ID="UpdatePanelMessage" runat="server" />
                        
<br />
                        Last update:
                        
<%= DateTime.Now.ToString() %>
                        
<br />
                        
<asp:Button runat="server" ID="Button1" Text="Submit Async Postback With Error" OnClick="ErrorProcessClick_Handler" />
                        
<br />
                    
</asp:Panel>
                
</ContentTemplate>
            
</asp:UpdatePanel>
            
<div id="AlertMessage">
            
</div>
        
</div>
    
</form>
</body>
</html>

三 调用WebService

首先新建一个Web Service,这个WebService和平时建的WebService的不同之处是,它需要using System.Web.Script.Services;并且在类名前加入[ScriptService]标签。

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

[ScriptService]
[WebService(Namespace 
= "Bingo.WebService")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService {
    [WebMethod]
    
public string HelloName(string s) {
        
return string.Format("Hello {0}",s);
    }
    
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebServiceSample.aspx.cs"
    Inherits
="WebServiceSample" 
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>Untitled Page</title>

    
<script type="text/javascript" language="javascript">
    
function OnButton_Click()
    
{
            WebService.HelloName(
            document.getElementById(
'inputName').value,       //params
            OnRequestComplete    //Complete event
            );
        
return false;
    }


    
function OnRequestComplete(result) 
    
{
        alert(result);
    }

    
</script>

</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:ScriptManager ID="ScriptManager1" runat="server">
                
<Services>
                    
<asp:ServiceReference Path="WebService.asmx" />
                
</Services>
            
</asp:ScriptManager>
            
<div>
                
<input type="text" id="inputName" size="20" />
                
<input type="button" value="点击我,调用Web Service" onclick="return OnButton_Click()" />
            
</div>
        
</div>
    
</form>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值