我想要完成的是仅在子 ascx 控件上重新加载部分页面。但是,如果我在页面加载上的 default.aspx 上设置了一个中断,则中断将在计时器滴答声中命中。我的理想方案是 default.aspx 永远不会重新加载。
默认.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</telerik:RadScriptManager>
<script type="text/javascript">
//Put your JavaScript code here.
</script>
<div>
<asp:Label runat="server" ID="DynLabel"></asp:Label>
<asp:PlaceHolder ID="PlaceHolderDyn" runat="server"></asp:PlaceHolder>
</div>
</form>
默认.aspx.cs
使用系统; 使用 System.Web; 使用 System.Web.UI; 使用 System.Web.UI.WebControls; 使用 System.Data; 使用 System.Configuration; 使用 System.Web.Security; 使用 System.Web.UI.WebControls.WebParts; 使用 System.Web.UI.HtmlControls; 使用 Telerik.Web.UI; 公共部分类默认值:System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { 指导 g; g = Guid.NewGuid(); DynLabel.Text = g.ToString(); PlaceHolderDyn.Controls.Add(LoadControl("~/Docks/DynControl.ascx")); } }
DynControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DynControl.ascx.cs" Inherits="Docks_DynControl" %>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Timer1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="LoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="DropDownList1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1"></telerik:AjaxUpdatedControl>
<telerik:AjaxUpdatedControl ControlID="Panel2"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<asp:Timer ID="Timer1" runat="server" Interval="3000" OnTick="Timer1_Tick"></asp:Timer>
<asp:UpdatePanel ID="Panel1" runat="server" UpdateMode="Conditional" ViewStateMode="Enabled">
<ContentTemplate>
<asp:PlaceHolder ID="DynamicPlaceHolder" runat="server"></asp:PlaceHolder>
<asp:Labelrunat="server" ID="DynamiclabelAscx"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
DynControl.aspx.cs
使用系统; 使用 System.Web; 使用 System.Web.UI; 使用 System.Web.UI.WebControls; 使用 System.Data; 使用 System.Configuration; 使用 System.Web.Security; 使用 System.Web.UI.WebControls.WebParts; 使用 System.Web.UI.HtmlControls; 使用 Telerik.Web.UI; 公共部分类 Docks_DynControl:System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } 公共无效 Timer1_Tick(对象发送者,EventArgs e) { 指导 g; g = Guid.NewGuid(); DynamiclabelAscx.Text = g.ToString(); } }
所以基本上 Default.aspx 上的标签是静态的,只加载一次,计时器会重新加载 ascx 上的标签,它总是会改变。这行得通,但我怎样才能防止 default.aspx 在计时器上重新加载?
谢谢!