ICallbackEventHandler

本文介绍了一种使用ASP.NET实现页面提交过程中不刷新页面的方法。通过客户端JavaScript与服务器端C#代码结合,实现了数据的异步提交及响应,具体包括客户端事件触发、服务器端方法调用及回调结果处理。

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

代码范例:(1)apsx_code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!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 id="Head1" runat="server">
    <title>ASP.NET 2.0 页面提交无刷新演示</title>

</head>
<body>
    <script type="text/javascript">
       function CallServer1(inputcontrol, context)
       {
            context.innerHTML = "<IMG SRC='images/pie.gif' />Loading...";
            arg = 'ServerMethod1|' + inputcontrol.value;
            <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData1", "context")%>;
        }
        function ReceiveServerData1(result, context)
        {
            context.innerHTML = context.id + ":" + result;
        }
    </script>
    <form id="form1" runat="server">
    <div>
        <h1>Demo1:html按钮提交数据</h1><br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <input id="Button1" type="button" value="提交到Label1" onclick="CallServer1(TextBox1, Label1)"/>&nbsp;
        <input id="Button2" type="button" value="提交到Label2" onclick="CallServer1(TextBox1, Label2)"/>
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>
        <br />
        <asp:Label ID="Label2" runat="server" Text="Label2:"></asp:Label>
    </div>
    <hr />
    <div>
        <h1>Demo2:服务器按钮提交数据</h1><br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:Button ID="Button3" runat="server" Text="Button" /><br />
        <asp:Label ID="Label3" runat="server" Text="Label3:"></asp:Label></div>   
    <hr />
    <div>
    </div>
    </form>
</body>
</html>

(2)cs_code:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Globalization;

public partial class test : System.Web.UI.Page, ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //注册客户端事件处理方法
        Button3.Attributes.Add("onclick", "CallServer1(TextBox2, Label3);return false;");
       // DropDownList1.Attributes.Add("onchange", "CallServer2(this)");
    }

    private string serverReturn;

    public string GetCallbackResult()
    {
        //为便于查看加载效果,添加延时
        System.Threading.Thread.Sleep(2000);

        string[] parts = serverReturn.Split('|');
        //根据传递的方法名进行调用,并传递相应的参数,目前只支持一个参数
        return (string)GetType().GetMethod(parts[0]).Invoke(this, new object[] { parts[1] });
    }

    public void RaiseCallbackEvent(string eventArgument)
    {
        serverReturn = eventArgument;
    }

    //根据从客户端传来的英文国家名或缩写,翻译成相应的中文国家名
    public string ServerMethod1(string arg)
    {
        string s;
        switch (arg.ToLower())
        {
            case "china":
                s = "中国";
                break;  
            default:
                s = "未知国家";
                break;
        }
        return s;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值