2015-12-14 4 views
0

У меня есть код captcha на моем сайте. иногда нужно сфотографировать эту картинку, но я не хочу, чтобы вся страница refreh. я использовал UpdatePanel следующим образом:Обновить код Captcha с элементом управления Updatepanel в ASP> NET

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 
       <asp:Label ID="lblmsg" runat="server" Font-Bold="True" 
        ForeColor="Red" Text=""></asp:Label> 
       <asp:TextBox ID="txtimgcode" runat="server"></asp:TextBox> 
       <asp:Image ID="Image1" runat="server" ImageUrl="~/CImage.aspx" /> 
       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Check" /> 


       <asp:Button ID="Button3" runat="server" Text="refresh" OnClick="Button3_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

Вот Button3 код позади:

protected void Button3_Click(object sender, EventArgs e) 
    { 
     Image1.ImageUrl = "~/CImage.aspx"; 
    } 

Button1 работает правильно Но Button3, которые должны изменить проверочное изображение не работает.

Я что-то упустил?

Кроме того, если я хочу использовать обновленное изображение вместо Button3, какие элементы управления следует использовать?

ответ

0

Изображение скорее всего не обновляется при частичной обратной передачи, так как браузер не понимает, что содержание изображения изменилось с тех пор она была ориентирована на ту же страницу снова и снова. Добавление запроса может помочь в этом случае нужно передать случайный идентификатор в качестве запроса на ImageUrl в captcha.

protected void Button3_Click(object sender, EventArgs e) 
{ 
    Image1.ImageUrl = string.Format("~/CImage.aspx?img={0}", Guid.NewGuid()); 
} 
+0

, когда Button3 выходит из UpdatePanel, работает правильно, но когда я ставлю n UpdatePanel doesen 't work –

+0

Вы пробовали мое решение, когда кнопка находится внутри панели обновления? – Prabhat

+0

yes.and this error on UpdatePanel1.Update(); line linkare: "" Метод Update может быть вызван только UpdatePanel с идентификатором 'UpdatePanel1', когда UpdateMode установлен в Условное. "" –

0

Нет ничего плохого в вашем коде. Пожалуйста, проверьте правильность значений «~/CImage.aspx» или нет. Я изменил код Пожалуйста, проверьте:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
     <ContentTemplate> 
      <asp:Label ID="lblmsg" runat="server" Font-Bold="True" 
       ForeColor="Red" Text=""></asp:Label> 
      <asp:TextBox ID="txtimgcode" runat="server"></asp:TextBox> 
      <asp:Image Width="100" Height="100" ID="Image1" runat="server" ImageUrl="~/CImage.aspx" /> 
      <asp:Button ID="Button1" runat="server" Text="Check" /> 


      <asp:Button ID="Button3" OnClick="Button3_Click" runat="server" Text="refresh" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Button3" EventName="Click" /> 
     </Triggers> 
    </asp:UpdatePanel> 


protected void Button3_Click(object sender, EventArgs e) 
{ 
    if (Image1.ImageUrl == "Koala.jpg") 
    { 
     Image1.ImageUrl = "Close.png"; 
    } 
    else 
    { 
     Image1.ImageUrl = "Koala.jpg"; 
    } 
} 
+0

Спасибо, но это не работает. Я имею в виду, что я не понимаю ваше значение «Koala.jpg» и «Close.png»? Что я должен писать вместо них? –

+0

Koala.jpg и close.png - это только имена изображений, которые я скопировал в папку проекта для тестирования. Вы можете заменить их своим URL-адресом изображения. –

+0

Я уже делал то, что вы говорите, но опять же это не работает. Но когда я выхожу из кнопки 3 из UpdatePanel, он работает правильно. –