2013-03-11 30 views
5

Niedawno przetestowaliśmy nasze produkty na IE10 i napotkaliśmy problem z tym sterowaniem przycisku serwera "Asp: ImageButton" nie są uruchamiane w IE10 z UpdatePanel. A poniżej jest przykładowy kod:ImageButton nie uruchamia ponownie wpisu na IE10

<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     Here is the content. 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="buttonSubmit" /> 
    </Triggers> 
</asp:UpdatePanel> 
<br /> 
<br /> 
<asp:Button ID="buttonSubmit" runat="server" ToolTip="Submit" OnClick="buttonSubmit_Click" /> 
</form> 

po stronie serwera:

protected void buttonSubmit_Click(object sender, ImageClickEventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "alert", "alert('It works.')", true); 
    } 

Oto dwie rzeczy, które mylić mnie: Jednym z nich jest kwestia tylko się dzieje, gdy wdrażane w IIS i działa dobrze, gdy debugowanie na VS. Dwa są, jeśli usunięto górny dwa znacznik "br", zdarzenie zostanie wywołane. Poza tym, jeśli zmienię przycisk ImageButton na Button, wydarzenie również zostanie wyrzucone.

Tak więc, nie wiem, czy czegoś brakuje, czy źle rozumiem koło życia kontrolek ImageButton i Button. Każda pomoc będzie bardzo wdzięczna.

środowisk testowych: VS2010, IIS 7.5, IE10 (10.0.9200.16484)

+0

Sprawdź moją odpowiedź i inne tutaj: http://stackoverflow.com/a/15129393/127880 Mam podejrzenie, że twój problem ma źródło w nowym błędzie IE10 ImageButton. Zainstalowałem .NET Framework 4.5 (mimo że opuściłem moją stronę IIS z 3.5) i problem z IE10 i imagebuttons został naprawiony. –

+1

Dzięki za szybką odpowiedź, George. Dobra wiadomość jest taka, że ​​wystarczy zaktualizować framework. Dzięki jeszcze raz. – Troy

+0

Wspaniałe wiadomości. Opublikowalem jako odpowiedź, abyśmy mogli być bardziej pomocni dla przechodniów. –

Odpowiedz

6

po prostu instalacja .NET Framework 4.5 może rozwiązać ten problem.

Ten problem może być spowodowany przez błąd ImageButton IE10, który powoduje, że IE10 niepoprawnie przelicza współrzędne na dziesiętne zamiast całkowite. Powoduje to, że kliknięcie przycisku ImageButton kończy się niepowodzeniem w wielu, jeśli nie w większości, sytuacjach w IE10.

Może to rozwiązać problem, nawet jeśli nie zmienisz puli aplikacji na .NET Framework 4.5.

W moim przypadku opuściłem pule aplikacji w .NET Framework 3.5. Najwyraźniej instalacja .NET Framework 4.5 nadpisuje niektóre pliki dla innych wersji framework.

patrz rozdział Obejścia here

Powiązane: IE10 sending image button click coordinates with decimals (floating point values) causing a ParseInt32 FormatException

+1

Ostrożnie z tym. 4.5 jest aktualizacją na miejscu, a nie aktualizacją side-by-side. Jeśli już korzystasz z witryn w wersji 4.0, aktualizacja może spowodować problemy. Ma być kompatybilny wstecz, ale ludzie udokumentowali przełomowe zmiany. – David

3

IE10 ma błąd. Jeśli stworzysz nową stronę aspx i zoptymalizujesz stronę za pomocą aktualizacji, , strona nie będzie działała poprawnie. Żadne zdarzenia serwera nie będą uruchamiane. Ale inne przeglądarki wykonają swoją pracę dobrze. Ciekawe, dlaczego Microsoft nie zauważył/naprawił tego problemu. I obchodzić problem z wymuszanie trybu IE9

<meta http-equiv="x-ua-compatible" content="IE=9" /> 
0

Zmieniłem ImageButton do LinkButton i umieścić obraz przycisku wewnątrz niego. Prace.

0

Można zrobić to samo w Page_PreRender

private bool alert; 
protected void buttonSubmit_Click(object sender, EventArgs e) 
    { 

     alert= true; 
     ViewState["alert"] = alert; 
    } 

protected void Page_PreRender(object sender, EventArgs e) 
    { 
     if (ViewState["alert"] != null) 
      alert= (bool)ViewState["alert"]; 
     if (alert) 
     { 
      alert= false; 
      ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "alert", "alert('It works.')", true); 

     } 
    } 

Aktualizacja panelu nie działa prawidłowo w IE 10 z kliknięć przycisków, obrazy itp

3

Zmień ImageButton do LinkButton i umieścić obraz w środku.

Jest to miłe obejście, to jest praca dla mnie.

Powiązane problemy