.net 实现页面提交无刷新

.aspx 页面代码


<head runat="server">

    <script type="text/javascript" language="javascript">
         function CallServerFunction()
         {
           //Arg是传向后台方法RaiseCallbackEvent()的参数,这里将操作符操作数一块传过去
           var title=document.getElementById("<%=TBTitle.ClientID %>").value;
            var content=document.getElementById("<%=TBContent.ClientID %>").value;
            args=title+"|"+content;


            //args=document.getElementById("<%=TBTitle.ClientID %>").value;//单参数
           
            if(title!="")
            {
            //获取一个客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调
            <%= ClientScript.GetCallbackEventReference(this,"args","ReceiveServerData","null") %>
            }
            else
            {
            alert("请输入名称!");
            return false;
            }
         }
          function ReceiveServerData(result)
        {
            //js里面,必须用Label的innerHTML 属性,用Text属性不会产生任何效果
             if(result!='')
            {
             alert("添加成功");
            }
            lblShow.innerHTML = result;
           
        }
          function CallServerFunction_onload()
         {
         
           //Arg是传向后台方法RaiseCallbackEvent()的参数,这里将操作符操作数一块传过去
            var title=document.getElementById("<%=TBTitle.ClientID %>").value;
            var content=document.getElementById("<%=TBContent.ClientID %>").value;
            args=title+"|"+content;
            //获取一个客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调
            <%= ClientScript.GetCallbackEventReference(this,"args","ReceiveServerData_onload","null") %>
          
         }
          function ReceiveServerData_onload(result)
        {
            //js里面,必须用Label的innerText属性,用Text属性不会产生任何效果
            lblShow.innerHTML = result;
        }
        //接收回调后台传过来的结果数据,该函数名为GetCallbackEventReference()的第三个参数

    </script>

</head>
<body οnlοad="CallServerFunction_onload()">
    <form id="form1" runat="server">
        <div>
            <%--调用回调函数的控件必须是HTML控件,不能为服务端控件--%>
            <asp:TextBox ID="TBTitle" runat="server"></asp:TextBox>&nbsp;<asp:TextBox ID="TBContent" runat="server"></asp:TextBox>
            <input type="Button" id="eq" value="添加" οnclick="CallServerFunction()" style="width: 64px" />
            <span id="gridspan">
                <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False">
                    <Columns>
                        <asp:BoundField DataField="id" HeaderText="id" />
                        <asp:BoundField DataField="title" HeaderText="标题" />
                         <asp:BoundField DataField="content" HeaderText="内容" />
                    </Columns>
                </asp:GridView>
                <asp:Label ID="lblShow" runat="server" Text="show"></asp:Label>
            </span>
            <br />
        </div>
    </form>
</body>
</html>

 

.aspx.cs 代码:

 private string Result;
    //定义两个变量,用来接收页面传过来到操作数
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    private GridView Bind()
    {
        CMS.BLL.NewsManage nm = new CMS.BLL.NewsManage();
        nm.SortField = "createTime desc";
        ArrayList al = nm.GetAll(0, 2);
        this.gv.DataSource = al;
        this.gv.DataBind();
        return this.gv;
    }
    /// <summary>
    /// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
    /// </summary>
    /// <param name="eventArgument">此参数是从客户端传过来的</param>
    public void RaiseCallbackEvent(string eventArgument)
    {
        //根据第一个参数(所选的操作符),调用不同的执行函数
        Result = add(eventArgument);
    }

    /// <summary>
    /// 该方法是返回回调的结果给客户端
    /// </summary>
    /// <returns></returns>
    public string GetCallbackResult()
    {
        return Result;
    }

    //一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
    private string add(string title)
    {
        string[] news =title.Split('|');
        if (news[0].ToString()!="")
        {
            CMS.BLL.NewsManage nm = new CMS.BLL.NewsManage();
           
            CMS.Model.CMS_NewsT nt = new CMS.Model.CMS_NewsT();
            nt.title =news[0];
            nt.modifyTime = System.DateTime.Now;
            nt.createTime = DateTime.Now;
            nt.state = 1;
            nt.content = news[1];
            nm.ModelObj = nt;
            nm.Insert();
        }
      
        StringBuilder strHtml = new StringBuilder();
        strHtml.Append(RenderControl(this.Bind()));
        return strHtml.ToString();
    }

    /*-----------说明------
        调用的顺序是: (前台)CallServerFunction() -->执行此JS方法,通过GetCallbackEventReference方法实现 (后台)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)接收页面传来的参数,并执行自定义方法,
     * 并返回页面中所需要的值。-->
     (后台)ICallbackEventHandler.GetCallbackResult()取得自定义方法返回的值给页面 --> (前台)ReceiveServerData(string Value)。根据返回的值输入要显示的内容*/
    private string RenderControl(Control control)
    {
        StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
        HtmlTextWriter writer2 = new HtmlTextWriter(writer1);
        control.RenderControl(writer2);
        writer2.Flush();
        writer2.Close();
        return writer1.ToString();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET可以利用Ajax技术实现刷新页面。Ajax是一种异步的JavaScript和XML通信技术,它可以在不刷新整个页面的情况下,向服务器提交或获取数据,并将返回的数据局部地更新到页面上。在ASP.NET中,可以通过以下步骤来实现刷新页面: 1. 引入jQuery库。 在ASP.NET页面中,需要通过<script>标签引入jQuery库,例如: ``` <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> ``` 2. 编写JavaScript代码。 通过jQuery库提供的$.ajax()方法,可以向服务器提交或获取数据,并在成功返回数据后更新页面。例如,下面的代码用于向服务器提交数据: ``` $.ajax({ type: "POST", url: "Handler.ashx", data: { name: "张三", age: 18 }, success: function (data) { $("#result").html(data); } }); ``` 其中,type表示提交数据的方式,可以是POST或GET;url表示提交数据的目标地址;data表示提交的数据,可以是JSON对象、字符串或FormData对象;success表示成功返回数据后的回调函数,data参数表示服务器返回的数据。 3. 编写服务器端代码。 在ASP.NET中,可以通过Generic Handler(通用处理程序)来处理Ajax请求。Generic Handler是一种不包含HTML标记的ASP.NET页面,可以处理各种类型的请求。例如,下面的代码用于处理上面的Ajax请求: ``` public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { string name = context.Request.Form["name"]; int age = int.Parse(context.Request.Form["age"]); // 处理请求,返回数据 context.Response.Write("提交成功!"); } public bool IsReusable { get { return false; } } } ``` 在该代码中,通过Request.Form[]属性获取提交的数据,处理请求后通过Response.Write()方法返回数据。 通过以上步骤,就可以在ASP.NET中利用Ajax技术实现刷新页面了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值