我有一个aspx页面调用Scheduler.aspx,它有一个带有转发器的更新面板,在转发器中ItemTemplate我有一个ModalPopupExtender,它有一个iFrame到另一个aspx页面调用这个Update.aspx
在Update.aspx页面的form_load中,代码检查来自另一个系统的一些更新,并将提醒用户发生了一些更新,
我发现的是当Scheduler.aspx页面加载update.aspx中的函数时被触发,所以我得到了一些警报,但是直到我进入模式中的Update.aspx之前不希望这样,
该函数在if(!Page.IsPostback)中但无论如何我可以判断该页面是加载实际还是仅加载父页面
Scheuler.aspx示例标记
<asp:UpdatePanel ID="updMon" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Repeater ID="rptMon" runat="server" OnItemCreated="rptMon_ItemCreated">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table style="width:100%;" class='<%# sTableClass(DataBinder.Eval(Container.DataItem, "DSC_ID").ToString()) %>'>
<tr>
<th>
<asp:LinkButton style="color:#717171" runat="server" id="LinkButton1" href="#">
<%# DataBinder.Eval(Container.DataItem, "DSC_DELNAME") %></asp:LinkButton>
</th>
</tr>
<tr>...</tr>
</table>
<cc1:ModalPopupExtender ID="mpe1" runat="server" PopupControlID="pnlMon1" TargetControlID="LinkButton1" ></cc1:ModalPopupExtender>
<asp:Panel ID="pnlMon1" runat="server" CssClass="pnlBackGround" align="center" style = "display:none" >
<iframe id="iFrm1" class="iframeStyle" src='<%# "Update.aspx?id=" + Eval("DSC_ID").ToString() %>' runat="server"></iframe>
<div id="divClose" style="position:relative;top:-60px;width:200px;left:450px;">
<asp:Button ID="btnCloseEdit1" runat="server" class="btn btn-primary" Text="Close" OnCommand="btnCloseEdit1_Command" CommandArgument='<%# Eval("DSC_ID").ToString() %>' />
</div>
</asp:Panel>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
</ContentTemplate>
对Update.aspx中的更新检查的调用就像这样
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.QueryString["id"] != null)
{
sID = Request.QueryString["id"].ToString();
CheckUpdates(sID);
}
}
答案 0 :(得分:0)
由于在iframe上设置了src链接,因此它会加载任何其他资源。模式弹出窗口只是页面上的标记,最终隐藏在浏览器中,但这并不意味着它的资源无法出去加载。解决这个问题的一种方法可能是使用javascript设置src属性,并且仅在打开模态时才设置。
答案 1 :(得分:0)
欢呼声,所以这就是我的表现方式......可能不是最好的方式,但我只想到转发器中的iframe,
<iframe id="iFrm1" class="iframeStyle" src="about:blank" runat="server"></iframe>
然后在转发器的ItemCreated中我添加了......
protected void rptMon_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton _link = (LinkButton)e.Item.FindControl("LinkButton1");
HtmlControl _frame = (HtmlControl)e.Item.FindControl("iFrm1");
_link.Attributes.Add("onclick", "FrameSrc('MainContent_rptMon_" + _frame.ClientID + "'," + DataBinder.Eval(e.Item.DataItem, "DSC_ID") + ");return false;");
}
}
然后我有一个javascript函数
function FrameSrc(frame, id) {
document.getElementById(frame).src = 'ScheduleUpdate.aspx?id=' + id;
}