代码如下:
<form id="form1" runat="server">
<!-- ASP.NET AJAX服务器端控件ScriptManager -->
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="true" runat="server" ateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>//以上代码来自《ASP。NET AJAX 实用开发详解》,以下代码是我增加的<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<div>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" /></div>
</form>
//cs代码
protected void Page_Load(object sender, EventArgs e)
{
//判断是否有页面回发
if (!IsPostBack)
{
Label1.Text = "begining...";
}
else
Label1.Text = "refreshed";
}
//书中的代码,点击按钮的在UpdatePanel1中
protected void Button1_Click(object sender,EventArgs e)
{
Response.Write("<script>alert('这个是一个对话框')</script>");
}
//我写的代码 点击按钮的 不 在UpdatePanel1中
protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('这个是一个对话框2')</script>");
}
问题:
不管点击哪个按钮,都触发了页面回发。我的理解按钮1应该不会引起页面回发,按钮1会引起回发的。看不出2者有何区别请指点。
<form id="form1" runat="server">
<!-- ASP.NET AJAX服务器端控件ScriptManager -->
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="true" runat="server" ateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>//以上代码来自《ASP。NET AJAX 实用开发详解》,以下代码是我增加的<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<div>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" /></div>
</form>
//cs代码
protected void Page_Load(object sender, EventArgs e)
{
//判断是否有页面回发
if (!IsPostBack)
{
Label1.Text = "begining...";
}
else
Label1.Text = "refreshed";
}
//书中的代码,点击按钮的在UpdatePanel1中
protected void Button1_Click(object sender,EventArgs e)
{
Response.Write("<script>alert('这个是一个对话框')</script>");
}
//我写的代码 点击按钮的 不 在UpdatePanel1中
protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('这个是一个对话框2')</script>");
}
问题:
不管点击哪个按钮,都触发了页面回发。我的理解按钮1应该不会引起页面回发,按钮1会引起回发的。看不出2者有何区别请指点。
若只想button2触发恢复
改成ChildrenAsTriggers=“false”,同时在updatepanel添加
<Triggers><asp:AsyncPostBackTrigger ControlID="Button2" /></Triggers>
关键是:我调试时做不到:
点击按钮Button1后 Label1.Text = "begining..." (即Label1没有变化,用它来判断页面是否重新回发了不知是否正确)。
我都不明白这个AjaxStart程序向我说明了什么了。
PostBack
Refresh
如 ScriptManager.RegisterClientScriptBlock(this,typeof(Page),"hello", "<script>alert('这个是一个对话框') </script>",false);
用浏览器的前进和后退来判断差别比较好。