我正在开发一个C#asp.net Web表单项目。它有两个母版页。我有一个用户控件从数据库中读取数据,在html字符串中创建一个无序列表,并用它填充占位符。此用户控件必须每2分钟自动刷新一次。我已将此usercontrol包含在父母版主页面中。我有以下代码刷新用户控件,我通过另一个stackoverflow答案获得。问题是整个母版页刷新,我不知道为什么。
有没有办法让只有具有UpdatePanel刷新的用户控件?
外主页:
<body>
<form id="frmMain" role="form" method="post" runat="server">
<div>
<uc2:PendingOrders runat="server" ID="PendingOrders" />
</div>
<asp:ContentPlaceHolder ID="MainBodyContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
用户控制:
<asp:ScriptManager ID="myScriptManager" runat="server"
EnablePartialRendering="True"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode = "Conditional"
runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="20000"
OnTick="Timer1_Tick"></asp:Timer>
<asp:PlaceHolder runat="server" id="lblMyOrders"></asp:PlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
用户控制代码背后:
protected void Timer1_Tick(object sender, EventArgs e)
{
//This method creates the html string with data as an unordered list
and
//populates asp:PlaceHolder inte updatepanel
GetData();
}
UpdatePanel1的内容将由Timer1_Tick更新。 “整个母版页刷新”意味着当Timer1被触发时,母版页的Page_Load将被调用? UpdatePanel始终发布整个页面返回服务器并仅呈现UpdatePanel1的内容。
我遇到了同样的问题,但是在我们的项目中,在主页上将EnablePartialRendering设置为false,如果设置为true,则整个项目都会中断。为了解决这个问题,我在没有ScriptManager的情况下定义了另一个母版页,并将ScriptManager添加到我想要使用UpdatePanels且EnablePartialRendering属性设置为True的页面中。这解决了这个问题。
<asp:ScriptManager ID="myScriptManager" runat="server" EnablePartialRendering="True"></asp:ScriptManager>