代码实现AJAX异步回传(弹出javascript脚本)、异步更新的错误处理

--------------------------------代码实现异步回传--------------------------------------------
页面关键代码

<body>
    <form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server">
  </asp:ScriptManager>
  
  <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
    <%= DateTime.Now %>
    <asp:Button ID="Button2" runat="server" Text="Button" />
   </ContentTemplate>
  </asp:UpdatePanel>
  <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </form>
 </body>
 后台代码
public partial class Demo2_API : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

   //让button1能够引发异步回传(且button1不在UpdatePanel中)
        ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.Button1);

 

   //让button2能够引发同步回传(且button2在UpdatePanel中)
        ScriptManager.GetCurrent(this).RegisterPostBackControl(this.Button2);


    }

 protected void Button1_Click(object sender, EventArgs e)
 {
        this.UpdatePanel1.Update();//更新UpdatePanel1中的内容
 }
}

 

----------------------异步回传时弹出javascript脚本-----------------------
页面关键代码

<body>
    <form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server">
  </asp:ScriptManager>

  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
    <%= DateTime.Now %>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
   </ContentTemplate>
  </asp:UpdatePanel>   
  <asp:UpdatePanel ID="UpdatePanel2" runat="server">
   <ContentTemplate>
    <%= DateTime.Now %>
   </ContentTemplate>
  </asp:UpdatePanel>
    </form>
</body>

后台代码:

public partial class Demo5_ScriptManagerReg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

 protected void Button1_Click1(object sender, EventArgs e)
 {

   //在UpdatePanel1更新时弹出javascript脚本
        ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "UpdatePanel1", "alert(1)", true);

   //在UpdatePanel2更新时弹出javascript脚本
  ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "UpdatePanel2", "alert(2)", true);


 }
}

 

-----------------------利用代码(创建UpdatePanel)实现AJAX效果-----------------------------
页面代码:
<body>
    <form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server">
  </asp:ScriptManager>

    </form>
</body>

后台代码:

public partial class Demo7_ProgramicUpdatePanel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
  UpdatePanel up = new UpdatePanel();
  up.ID = "UpdatePanel1";
  this.Form.Controls.Add(up);

  LiteralControl lc = new LiteralControl(DateTime.Now.ToString());
  up.ContentTemplateContainer.Controls.Add(lc);

  Button btn = new Button();
  btn.Text = "Refresh";
  up.ContentTemplateContainer.Controls.Add(btn);
    }
}

 

--------------------AJAX异步更新的错误处理-----------------------------------------------------

可以通过ScriptManager控件的OnAsyncPostBackError事件和AsyncPostBackErrorMessage属性捕捉和设置回传时的错误消息

示例:

 

 

页面代码:

后台代码:

public partial class UpdatePanelErrorMessage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            double a = Convert.ToDouble(TextBox1.Text.Trim());
            double b = Convert.ToDouble(TextBox2.Text.Trim());
            double res = a * b;
            Label2.Text = res.ToString("f3");//输出字符串格式的控制
        }
        catch (Exception ex)
        {
            if (TextBox1.Text.Length > 1 && TextBox2.Text.Length > 1)
            {
                ex.Data["cuo"] = "这两个数无法相乘!";
            }
            throw ex;
        }
    }
    protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
    {
        if (e.Exception .Data ["cuo"]!=null )
        {
            ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Data["cuo"].ToString();
        }
        else
        {
            ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值