2013-08-26 50 views
23

Tôi muốn gọi CsharpFunction mã phía sau từ JavaScript. Tôi đã thử mã dưới đây. Vấn đề là nếu điều kiện là True hoặc False, trình biên dịch sẽ gọi số CsharpFunction! Làm thế nào tôi có thể kiểm soát điều đó?Cách gọi hàm C# từ javascript?

mã JavaScript:

if (Javascriptcondition > 0) { 
    <%CsharpFunction();%> 
} 

C# mã sau:

protected void CsharpFunction() 
{ 
    // Notification.show(); 
} 

Nhờ sự giúp đỡ!

+2

Cách bạn đã làm điều đó là sai . Mã bạn đã viết được thực hiện trên máy chủ và máy chủ không biết về điều kiện javascript của bạn. Bạn có thể muốn sử dụng AJAX. – Nilesh

+0

Xin lỗi vì đã trả lời một nửa! Vâng, bạn có thể gửi điều kiện của bạn với hình thức trong các lĩnh vực ẩn và hơn bạn có thể kiểm tra giá trị của nó để gọi phương thức đó hay không. –

+0

bạn nên sử dụng Thư viện Ajax – Rohit

Trả lời

27

Bạn có thể sử dụng Web Phương pháp và Ajax

<script type="text/javascript">    //Default.aspx 
     function DeleteKartItems() {  
       $.ajax({ 
       type: "POST", 
       url: 'Default.aspx/DeleteItem', 
       data: "", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#divResult").html("success"); 
       }, 
       error: function (e) { 
        $("#divResult").html("Something Wrong."); 
       } 
      }); 
     } 

[WebMethod]         //Default.aspx.cs 
    public static void DeleteItem() 
    { 
    //Your Logic 
    } 
+4

ví dụ của bạn gọi trang mã C#, không phải là hàm. – vico

-4

Bạn không thể. Javascript chạy phía máy khách, C# chạy phía máy chủ.

Thực tế, máy chủ của bạn sẽ chạy tất cả mã C#, tạo Javascript. Javascript sau đó, được chạy trong trình duyệt. Như đã nói trong các bình luận, trình biên dịch không biết Javascript.

Để gọi chức năng trên máy chủ của bạn, bạn sẽ phải sử dụng các kỹ thuật như AJAX, như đã nói trong các câu trả lời khác.

+0

http://www.daniweb.com/web-development/aspnet/threads/31065/calling-c-function-through-javascript-in-asp.net tại đây –

+1

@Shyamsundarshah mô tả AJAX và '__doPostback', về cơ bản là cách để kích hoạt máy chủ để chạy một cái gì đó.Nhưng theo một nghĩa nào đó, bạn nói đúng. –

0

Nếu bạn muốn thực hiện cuộc gọi từ máy khách, bạn nên sử dụng Ajax - xem một cái gì đó như Jquery và sử dụng $ .Ajax() hoặc $ .getJson() để gọi hàm máy chủ, tùy thuộc vào loại trở lại bạn đang theo hoặc hành động bạn muốn thực hiện.

1

Chức năng phía máy chủ nằm ở phía máy chủ, các chức năng phía máy khách nằm trên máy khách. Những gì bạn có thể làm là bạn phải đặt biến biểu mẫu ẩn và gửi biểu mẫu, sau đó sử dụng trang xử lý Page_Load bạn có thể truy cập giá trị biến và gọi phương thức máy chủ.

Thông tin thêm có thể được tìm thấy herehere

1
.CS File  
    namespace Csharp 
    { 
     public void CsharpFunction() 
     { 
     //Code; 
     } 
    } 

    JS code: 
    function JSFunction() { 
      <%#ProjectName.Csharp.CsharpFunction()%> ; 
    } 

Lưu ý: Chức năng trong JS khi gọi hàm trang CS của bạn .... tên đầu tiên của dự án sau đó đặt tên không gian tên của trang CS sau đó chức năng tên

Các vấn đề liên quan