【发布时间】:2018-05-24 00:35:21
【问题描述】:
我读过关于堆栈溢出的类似问题,但这可能有点不同。由于我正在处理的页面有很多用户控件并且 Ajax 已经在工作......我将首先尝试总结代码
该页面有一个链接按钮查看详细信息,可在弹出窗口中打开用户控件EmploymentOfferDetails
在同一页面的末尾,我添加了一个带有 imagebutton 的中继器控件,并希望在单击 imagebutton 时打开另一个带有另一个用户控件的弹出窗口
我已将 itemcommand 添加到中继器,但未触发(已阅读所有中继器项命令未触发帖子)
现在的问题是,当我打开单击此图像按钮时,employmentOfferDetails 控件的验证器以某种方式被触发,并且由于它有一个空对象,它会导致验证错误并且调试器转到 Application_EndRequest ..这是代码
(相同的代码适用于中继器控件之外的图像按钮):S
<telerik:AjaxSetting AjaxControlID="lbEmploymentOfferDetails">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="pnlEmploymentOfferDetails" LoadingPanelID="rlpRIDESelected" />
<telerik:AjaxUpdatedControl ControlID="hfEmploymentOfferId" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="lbEmploymentOfferDummyLink">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="pnlEmploymentOfferDetails" LoadingPanelID="rlpRIDESelected" />
<telerik:AjaxUpdatedControl ControlID="hfEmploymentOfferId" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rptMedicareReplyDateGroup">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ucAGPTMailDetails" />
</UpdatedControls>
</telerik:AjaxSetting>
HTML
<div id="divEmploymentOfferDummylink" style="position:absolute;z-index:900;left:0;top:0;display:none;">
<asp:LinkButton runat="server" ID="lbEmploymentOfferDummyLink" Text="View Employment Offer Details" Visible="true" CausesValidation="false" OnClientClick="ShowEmploymentOfferDetails();"></asp:LinkButton>
</div>
<asp:Panel runat="server" ID="pnlPlacementBasicInformation">
<div class="control-group required" id="divEmploymentOfferLink" runat="server" visible="false">
<asp:Label runat="server" AssociatedControlID="lbEmploymentOfferDetails" CssClass="control-label"
Text="Employment Offer" ID="lblEmploymentOffer" />
<div class="controls">
<asp:LinkButton runat="server" ID="lbEmploymentOfferDetails" Text="View Details"
CausesValidation="false" OnClientClick="ShowEmploymentOfferDetails();"></asp:LinkButton>
</div>
</div>
<div id="medicareInformation" class="hide well">
<!-- Main facility and Additional Sites table -->
<!--Another repeater control goes here-->
<div class="control-group">
<asp:Label ID="Label20" runat="server" AssociatedControlID="lblMedicareReplyDate" Text="Medicare Send Confirmation:"
CssClass="control-label" Width="220px" />
<div class="controls" style="margin-left: 225px;">
<asp:Label ID="lblMedicareReplyDate" runat="server" />
<asp:Literal ID="litMedicareReplyEmaiId" runat="server" Visible="false" />
<asp:ImageButton ID="iBtnMedciareReplyEmail" runat="server" ImageUrl="~/Images/Icons/communication-active.png" Width="25px" AlternateText="Click to open email" ToolTip="Click to open email" />
</div>
</div>
<div class="control-group">
<asp:Label ID="Label23" runat="server" AssociatedControlID="rptMedicareReplyDateGroup" Text="Medicare Send Confirmation:"
CssClass="control-label" Width="220px" />
<asp:Repeater runat="server" ID="rptMedicareReplyDateGroup">
<ItemTemplate>
<div class="row" id="trRepeaterItem" runat="server">
<asp:Label ID="lblMedicareReplyDateItem" runat="server" />
<asp:Literal ID="litMedicareReplyEmaiIdItem" runat="server" Visible="false" />
<asp:ImageButton ID="iBtnMedciareReplyEmailItem" runat="server" ImageUrl="~/Images/Icons/communication-active.png" CausesValidation="false" Width="25px" AlternateText="Click to open email" ToolTip="Click to open email" CommandName="OpenEmail" OnClientClick="ShowMedicareDetails();" />
<asp:LinkButton ID="lnkTest" runat="server" OnClientClick="ShowMedicareDetails();" Text="Test Button" OnClick="lnkTest_Click" CausesValidation="false" />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
在图像按钮上单击我正在打开包含另一个用户控件的模式弹出窗口。现在这会导致整个页面的服务器端验证,包括 EmploymentOfferDetails 的服务器端验证,并且 Application_EndRequest 被调用,因为 EmploymentOfferDetails 没有正确初始化..因此(我假设)中继器 itemcommand 没有被触发。
但 iBtnMedciareReplyEmail(一个外部中继器)工作正常。
我希望我能够解释我的问题
【问题讨论】:
标签: javascript ajax validation user-controls repeater