我正在使用 .NET 3.5 并在 Community Server 2008 框架内构建页面。
在其中一个页面上,我试图让 UpdatePanel 正常工作。
我直接从 ASP.NET 网站获取样本,通过单击按钮将 UpdatePanel 中的时间更新为当前时间,但是由于某种原因,当我尝试执行整个页面刷新的功能时.
这是我的:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
Label2.Text = "Panel refreshed at " + DateTime.Now.ToString();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<fieldset>
<legend>UpdatePanel</legend>
<asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
每当我点击按钮时,确保面板更新 - 但整个页面都会回发!我可以看到整个页面都在闪烁。我到底做错了什么?
我在一个嵌套的母版页中,但我不确定这是否是个问题。我正在使用的这个社区服务器框架中是否存在导致所有事件回发的内容?
最佳答案
您是否尝试在触发器部分将 Button1
设置为 AsyncPostBackTrigger
?将 ChildrenAsTriggers
属性设置为 true
,将 UpdateMode
属性设置为 Conditional
。
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
UpdatePanel1.Update();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
<ContentTemplate>
<fieldset>
<legend>UpdatePanel</legend>
<asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
关于c# - 如何阻止 UpdatePanel 导致整个页面回发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728043/