2011-08-25 24 views
19

Tôi đang tạo một ứng dụng bằng ASP.Net, trong đó tôi có một nút HTML trên trang aspx.gọi sự kiện phía máy chủ từ điều khiển nút html

<input type="submit" id="btnSubmit" runat="server" 
    style="background-image:url(App_Themes/default/Images/quiz_class/btn_submit.jpg); 
    width:80px; height:29px;" onserverclick="btnSubmit_ServerClick" /> 

Nhưng khi tôi nhấp vào nút thì không gọi sự kiện btnSubmit_ServerClick trên trang aspx.cs.

Tôi không muốn sử dụng nút điều khiển asp.

Xin giúp ..

+0

Sooo ... Đó là 3 năm. Bạn đã bao giờ nhận ra điều này chưa? Chấp nhận câu trả lời! (Ngay cả khi bạn phải tạo ra nó trước) – Cullub

Trả lời

0

Hãy làm theo hướng dẫn này: http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/

Trên một sidenote: ASP.NET tạo ra một phía khách hàng chức năng javascript mà bạn có thể gọi từ chức năng của riêng bạn để thực hiện các postback bạn muốn.

- Thông tin thêm về cướp sự kiện postback:

2

Cách dễ nhất để thực hiện điều này là để ghi đè lên các phương pháp RaisePostBackEvent.

<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... /> 

Và trong JavaScript:

raisePostBack = function(){ 
    __doPostBack("<%=btnRaisePostBack.ClientID%>", ""); 
} 

Và trong mã của bạn:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
{ 
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument); 

    if (source == btnRaisePostBack) 
    { 
     //do some logic 
    } 
} 
+0

tôi đã thử mã này, một postback được kích hoạt nhưng 'void override void RaisePostBackEvent' chức năng không được thực hiện. làm thế nào để giải quyết điều này? – Vijayaraghavan

32

Nếu bạn là OK với chuyển đổi nút đầu vào đến một máy chủ kiểm soát bên bằng cách xác định runat="server", và bạn đang sử dụng asp.net, một tùy chọn có thể sử dụng thuộc tính HtmlButton.OnServerClick.

<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" /> 

Điều này sẽ hoạt động và gọi foo_OnClick trong mã phía máy chủ của bạn. Cũng lưu ý rằng dựa trên tài liệu của Microsoft được liên kết ở trên, bạn cũng nên có thể sử dụng thẻ HTML 4.0.

+0

đó chắc chắn là câu trả lời nó hoạt động tốt với tôi –

+0

Làm thế nào để bạn khai báo 'foo_OnClick'? – Cullub

+0

OK: '' Công cụ C# của bạn phải ở đây. – Cullub

4

Trên trang aspx của bạn xác định các phần tử HTML Nút với các nghi phạm thông thường: runat, giai cấp, tiêu đề, vv

Nếu yếu tố này là một phần của một dữ liệu điều khiển ràng buộc (ví dụ: lưới xem, vv), bạn có thể muốn sử dụng CommandName và có thể CommandArgument dưới dạng thuộc tính. Thêm nội dung và thẻ đóng của nút của bạn.

<button id="cmdAction" 
    runat="server" onserverclick="cmdAction_Click()" 
    class="Button Styles" 
    title="Does something on the server" 
    <!-- for databound controls --> 
    CommandName="cmdname"> 
    CommandArgument="args..." 
    > 
    <!-- content --> 
    <span class="ui-icon ..."></span> 
    <span class="push">Click Me</span> 
</button> 

Trên mã đằng sau trang, thành phần sẽ gọi trình xử lý được xác định là chức năng sự kiện ID_Click của phần tử.

protected void cmdAction_Click(object sender, EventArgs e) 
{ 
: do something. 
} 

Có các giải pháp khác như sử dụng điều khiển tùy chỉnh, v.v. lưu ý rằng tôi đang sử dụng trực tiếp các dự án này trong VS2K8.

Hy vọng điều này sẽ hữu ích. Tận hưởng!

0

chỉ cần sử dụng này vào cuối nút bạn bấm kiện

protected void btnAddButton_Click(object sender, EventArgs e) 
{ 
    ... save data routin 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 
Các vấn đề liên quan