2014-12-26 2 views
1

Я искал эту проблему, но вопросы, которые уже по этому вопросу не помогают мне. Прежде всего, я ныряю в район Аякса и не очень хорошо знаком с ним. Я создал очень простой WebUserControl, который в основном представляет собой контактную форму. HTML для пользовательского элемента управления естьСтатическое содержимое UpdatePanel исчезает после частичной обратной передачи

<telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server"> 
<AjaxSettings> 
    <telerik:AjaxSetting AjaxControlID="btnSubmitContactForm"> 
     <UpdatedControls> 
      <telerik:AjaxUpdatedControl ControlID="upContactForm" LoadingPanelID="RALP_ContactForm" /> 
     </UpdatedControls> 
    </telerik:AjaxSetting> 
</AjaxSettings> 
</telerik:RadAjaxManagerProxy> 


<telerik:RadAjaxLoadingPanel ID="RALP_ContactForm" runat="server" Transparency="5"> 
       <img src="images/cf_animation.GIF" alt="Processing Request..." /> 
</telerik:RadAjaxLoadingPanel> 

<asp:UpdatePanel ID="upContactForm" runat="server"> 
<ContentTemplate> 
    <div id="form-main"> 
     <div id="form-div"> 
      <p class="name"> 
       <asp:TextBox ID="txtContactName" runat="server"></asp:TextBox> 
      </p> 
      <p> 
       <asp:TextBox ID="txtContactEmail" runat="server"></asp:TextBox> 
      </p> 
      <p> 
       <asp:TextBox ID="txtContactComment" TextMoe="MultiLine" runat="server"></asp:TextBox> 
      </p> 
      <p><asp:Label ID="lblMessage" runat="server" Visible="false"></asp:Label></p> 
      <div> 
       <asp:Button ID="btnSubmitContactForm" runat="server" 
        Text="SEND" OnClick="btnSubmitContactForm_Click" /> 
      </div> 
     </div> 
    </div> 

Как вы можете видеть, что управление очень простое. Я вызываю элемент управления на своей главной странице,

<uc1:FooterContactForm ID="FooterContactForm" runat="server"></uc1:FooterContactForm> 

Теперь он функционирует абсолютно нормально, когда он отображается. Когда я нажимаю кнопку «ОТПРАВИТЬ», тогда загружается изображение, и содержимое на стороне сервера отправляется по электронной почте мне.

Когда этот процесс завершен, внезапно исчезает нижний колонтитул. Это не только в случае пользовательского контроля, но когда я внедрил его без пользовательского контроля, содержимое UpdatePanel исчезнет. Когда я помещаю следующую строку кода после отправки электронной почты на стороне сервера, содержимое становится видимым и не исчезает.

upContactForm.Update(); 

Это заполняет проблему исчезновения контактной формы. Но когда я пытаюсь сбросить TextBox, это дает мне ошибку, что для обновления панели обновления мне нужно установить UpdateMode в условное. Когда я устанавливаю условие UpdateMode на условие, ошибка исчезает, но контактная форма снова исчезает после обратной передачи.

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

+0

я узнал, что UpdatePanel исчезает из-за AjaxManager на родительской странице. Когда я удаляю AjaxManager с родительской страницы, тогда управление не исчезает, но изображение загрузки через RadAjaxLoadingPanel не отображается. Почему AjaxManager делает это? –

ответ

1

Вы не должны устанавливать параметры AJAX из RadAjaxManager/RadAjaxManagerProxy/RadAjaxPanel с помощью UpdatePanel, поскольку панели обновления вложенности могут быть непредсказуемыми.

Вот установка, которая должна работать нормально:

 <telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server"> 
      <AjaxSettings> 
       <telerik:AjaxSetting AjaxControlID="btnSubmitContactForm"> 
        <UpdatedControls> 
         <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="RALP_ContactForm" /> 
        </UpdatedControls> 
       </telerik:AjaxSetting> 
      </AjaxSettings> 
     </telerik:RadAjaxManagerProxy> 

     <telerik:RadAjaxLoadingPanel ID="RALP_ContactForm" runat="server" Transparency="5"> 
      <img src="images/cf_animation.GIF" alt="Processing Request..." /> 
     </telerik:RadAjaxLoadingPanel> 

     <asp:Panel ID="Panel1" runat="server"> 
      <div id="form-main"> 
       <div id="form-div"> 
        <p class="name"> 
         <asp:TextBox ID="txtContactName" runat="server"></asp:TextBox> 
        </p> 
        <p> 
         <asp:TextBox ID="txtContactEmail" runat="server"></asp:TextBox> 
        </p> 
        <p> 
         <asp:TextBox ID="txtContactComment" TextMoe="MultiLine" runat="server"></asp:TextBox> 
        </p> 
        <p> 
         <asp:Label ID="lblMessage" runat="server" Visible="false"></asp:Label> 
        </p> 
        <div> 
         <asp:Button ID="btnSubmitContactForm" runat="server" 
            Text="SEND" OnClick="btnSubmitContactForm_Click" /> 
        </div> 
       </div> 
      </div> 
     </asp:Panel> 
+0

Спасибо за помощь. –

Смежные вопросы