2009-08-18 17 views
5

Jesteśmy aktualnie wykonywanego odświeżenie strony cross-strony za pomocą PostBackUrl z asp:Button:PostBackUrl niedostępne HTML Przyciski

<asp:Button runat="server" PostBackUrl="processing.aspx" /> 

który generuje ten javascript onclick rzeczy:

<input type="submit" name="ctl03" 
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', ', false, ', 'processing.aspx', false, false))" /> 

Chcielibyśmy w celu przełączenia go na używanie zwykłego ol '<button runat="server"> (easier to style) jednak nie jest obsługiwany na nich PostBackUrl.

Pomyślałem więc: co jeśli po prostu skorzystam z tego JavaScript w moim <button> elemencie?

<button runat="server" name="ctl03" 
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', '', false, '', 'processing.aspx', false, true))"> 
</button> 

I waddayaknow, to działa.

Czy ktoś kiedykolwiek widział to wcześniej? Jaka szkoda przyjdzie do mnie lub moich dzieci, jeśli będę to kontynuować?

+0

Tylko dla wyjaśnienia - dlaczego odkładasz zwrot między stronami do kontroli zamiast do formularza? Czy masz jakieś kontrole, które przesyłają z powrotem na oryginalną stronę? –

+0

@ Mark: tak, niektóre przyciski odświeżenie strony do tej samej strony, nie powinno. –

Odpowiedz

5

Ciekawe pytanie, po prostu wyglądał GetPostBackEventReference metodę clientScript i tutaj co otrzymuję:

przycisk po stronie ASP.NET:

<button id="Button2" runat="server" name="Button2"></button> 

Na kodu źródłowego:

PostBackOptions postBackOptions = new PostBackOptions(Button2); 
postBackOptions.ActionUrl = "processing.aspx"; 
Button2.Attributes.Add("onclick", 
    ClientScript.GetPostBackEventReference(postBackOptions)); 

Wynik renderowany:

<button id="Button2" name="Button2" 
    onclick="WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button2&quot;, &quot;&quot;, false, &quot;&quot;, &quot;processing.aspx&quot;, false, true))"> 
</button> 
+2

To chyba lepszy sposób na zrobienie tego. –

+0

Piękne, dziękuję. Nigdy w rzeczywistości nie użyłem 'ClientScript.GetPostBackEventReference' ani nie zauważyłem, że wziął opcje. –

0

"Prawdopodobnie nie", ale polegasz na szczegółach implementacji kodu JavaScript ASP.NET, który może się zmieniać z biegiem czasu.

Będę szczery, naprawdę nie zdawałem sobie sprawy, że istnieje element "<>" element HTML.