2009-08-18 4 views
5

Chúng tôi hiện đang thực hiện một postback chéo trang bằng cách sử dụng PostBackUrl của một asp:Button:PostBackURL không có sẵn trên Buttons Html

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

mà tạo ra javascript onclick công cụ này:

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

Chúng tôi muốn để chuyển đổi sang sử dụng đồng bằng ol '<button runat="server"> (easier to style) tuy nhiên, PostBackUrl không được hỗ trợ trên chúng.

Vì vậy, tôi nghĩ: điều gì sẽ xảy ra nếu chỉ sử dụng JavaScript được nói trong phần tử <button> của tôi?

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

Và waddayaknow, nó hoạt động.

Có ai từng xem công việc này trước đây không? Những gì gây hại sẽ đến với tôi hoặc con tôi nếu tôi tiến hành điều này?

+0

Chỉ để làm rõ - tại sao bạn đặt đăng lại qua trang trên điều khiển thay vì biểu mẫu? Bạn có một số điều khiển đăng lại trang gốc không? –

+0

@Mark: có, một số nút postback đến cùng một trang, người ta không nên. –

Trả lời

5

Thú vị câu hỏi, tôi chỉ nhìn phương pháp GetPostBackEventReference clientscript và đây là những gì tôi nhận được:

Nút tại ASP.NET page:

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

Tại code-behind:

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

Kết quả được hiển thị:

<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

Đó có lẽ là cách tốt nhất để làm điều đó. –

+0

Đẹp, cảm ơn bạn. Tôi đã không bao giờ thực sự sử dụng 'ClientScript.GetPostBackEventReference' cũng như không nhận ra nó có các tùy chọn. –

0

"Có thể không phải", nhưng bạn dựa vào chi tiết triển khai của JavaScript ASP.NET có thể thay đổi theo thời gian.

Tôi sẽ thành thật, tôi đã không thực sự nhận ra có một '< nút>' phần tử HTML.