Команда Repeater Item не запущена, но вызывает проверки на стороне сервера у всех валидаторов страницы - PullRequest
0 голосов
/ 24 мая 2018

Я читал похожие вопросы о переполнении стека, но это может быть немного по-другому.Поскольку на странице, над которой я работаю, есть много пользовательских контролей, и Ajax уже работает ... Сначала я попытаюсь обобщить код

На странице есть кнопка ссылки Просмотр сведений , которая открывает пользовательский контроль EmploymentOfferDetails во всплывающем окне

В конце этой же страницы я добавил элемент управления повторителем с кнопкой изображения и хочу открыть другое всплывающее окно с другим пользовательским элементом управления при нажатии кнопки изображения

Я добавил команду item в ретранслятор, но он не запущен (прочитал все команды элемента ретранслятора, не запускающие сообщения)

Теперь проблема заключается в том, что когда я открываю, нажимаю на эту кнопку изображения, как-то проверяется валидатор элемента управления EmploymentOfferDetailsсработал, и поскольку он имеет нулевой объект, он вызывает проверку false и отладчик переходит к 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 не инициализирован должным образом ... и поэтому (я предполагаю) команда элемента повторителя не запускается.

iBtnMedciareReplyEmail(один внешний ретранслятор), однако, работает правильно.

Я надеюсь, что смогу объяснить свою проблему

1 Ответ

0 голосов
/ 24 мая 2018

Нашел мой ответ здесь:

Команда элемента повтора вызывает проверку

Для всех, у кого есть эта проблема и спотыкается в этом посте, вот что я нашел.

Оказывается, проблема возникла из-за того, что на репитере было установлено EnableViewState = "false".Это каким-то образом нарушало обратную передачу события и вызывало срабатывание каждого валидатора на странице.Все, что мне нужно было сделать, это вручную вызвать DataBind () для повторителя из Page_Load (), и он сразу очистился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...