2010-04-22 81 views
5

Tôi thích gọi hàm JavaScript từ C#. Bất kỳ ai cũng có thể cho tôi đoạn mã.Cách gọi hàm javascript từ C#

Xem chi tiết ...

Tôi có trang asp.net có nút asp. khi tôi bấm vào nút đó, tôi thích gọi hàm javascript.

như khôn ngoan ....

trong trang asp.net của tôi,

<button id="save" onclick="i like to call a method resides in asp.net page'>Save</button> 

Ngày càng có nhiều chi tiết ... khi nhấp vào nút asp.net, tôi muốn thực hiện một số máy chủ hành động phụ và sau đó muốn gọi hàm javascript từ chính nó ...

+4

Đây có phải là từ trong trang ASP.NET không? Ứng dụng dành cho máy tính để bàn? Cần thêm ngữ cảnh cho loại C# dự án này đang được gọi từ. –

+2

Bạn có thể muốn đưa ra câu trả lời của bạn một chút; đó là một chút mơ hồ. –

+2

Bạn không phải là kỹ thuật gọi Javascript từ C# ... bạn chỉ muốn có một nút gọi asp.net Javascript, câu trả lời của Mikael Svenson là cách để thực hiện điều đó –

Trả lời

9

Đối với một asp:button bạn sử dụng OnClientClick

<asp:Button id="myid" runat="server" OnClientClick="alert('test')" /> 
3

Bạn không thể "gọi" hàm Javascript từ ASP.NET C# code-behind. Bạn có thể viết Javascript bổ sung cho trang web. Vào thời điểm trang được gửi lại cho người dùng và Javascript tồn tại, mã của bạn bị mất. Bạn có thể viết ra một Literal hoặc làm một Response.Write()

Response.Write("<script language='javascript'>alert('Hellow World');</script>"); 
+0

Tôi chỉ đoán rằng anh ấy đang nói về ASP.NET ... nó dựa trên các câu hỏi trước đây của mình –

+0

+1 cho Response.Write(), đó là C# -calling-JS nhiều hơn các trang ASPX. Kinda-Sorta. –

+0

Response.Write() dường như nối thêm mã đó trên đầu trang được tạo ra - phía trên các thẻ html - để trang có lỗi, tôi có làm gì sai không? –

6

Trên giả định rằng bạn đang mã hóa trong ASP.NET (bao gồm MVC), gọi một hàm JavaScript sẽ có nghĩa là nhúng các cuộc gọi trong JavaScript vào mã aSPX của bạn, như vậy:

<script type="text/javascript"> 
    doSomething(); 
</script> 

bạn không có cơ hội để vượt qua thông tin từ bạn C# để gọi JS, cũng giống như bạn sẽ có bất kỳ mã khác làm thay đổi kết quả của aSPX của bạn:

<script type="text/javascript"> 
    doSomething("<%= GetSomeTextFromCSharp(); %>"); 
</script> 

Điều này thực sự kéo dài định nghĩa của "gọi JavaScript từ C#" mặc dù. Những gì bạn đang làm là để mã C#/ASPX của bạn tạo HTML/JavaScript, trình duyệt sẽ diễn giải như bất kỳ HTML/JS nào khác (bất kể nó được tạo ra như thế nào).

Có lẽ bạn có thể giải thích những gì bạn đang cố gắng làm nhiều hơn một chút.

+0

+1 Anh ấy yêu cầu gọi JavaScript từ C# nhưng phương pháp của bạn là KỸ THUẬT cách ưa thích để làm điều này giữa các nhà phát triển có kinh nghiệm –

+0

Đồng ý ... nó không phải là câu trả lời chính xác nhất cho câu hỏi của anh ấy. –

1

Sarathi, dựa trên bản cập nhật gần đây của bạn, rõ ràng bạn không cần bất kỳ tương tác C# nào cả. <button> của bạn dường như nghiêm chỉnh phía máy khách (ví dụ: HTML) không có tương tác ASP.NET bên trong nó. Để gọi hàm JavaScript của bạn, bạn muốn đính kèm lời gọi hàm vào thuộc tính onclick của thẻ nút:

<button id="save" onclick="mySaveFunction();'>Save</button> 

Lưu ý rằng mySaveFunction() chỉ cần được xác định trong ngăn xếp tải của trình duyệt cho trang hiện tại. Điều đó có nghĩa nó có thể được định nghĩa trong bất kỳ:

  • Các trang ASPX chứa <button>
  • Trang Thầy cho ASPX trang hiện
  • Một trong những điều khiển tài khoản (hoặc partials MVC) nạp bởi trang ASPX hiện tại
  • Tệp JavaScript bên ngoài được tải bởi một trong những điều trên.

Cuối cùng, tôi muốn nhắc lại rằng không có gì đặc biệt về C#/ASP.NET cụ thể về điều này. Bạn có thể làm tương tự với bất kỳ ngôn ngữ/khuôn khổ nào, bao gồm các tệp HTML tĩnh. Câu hỏi của bạn dường như hoàn toàn phụ thuộc vào JavaScript.

1

Đối với các đối tượng cửa sổ:
http://msdn.microsoft.com/en-us/library/ms536420%28VS.85%29.aspx

window.execScript

Đối với pbject page:
http://msdn.microsoft.com/en-us/library/dfbt9et1%28v=VS.71%29.aspx

RegisterClientScriptBlock

RegisterOnSubmitStatement

RegisterStartupScript

vv ...

+1

Sửa lỗi nếu tôi sai, nhưng không phải chỉ window.execScript IE? –

+0

+1 @Craig Walker Bài viết này gợi ý rằng đây là phương pháp chỉ có trong IE: http://ajaxian.com/archives/evaling-with-ies-windowexecscript –

4

tôi đã cố gắng với mã này nó làm việc cho tôi kiểm tra xem nó giúp

1)

Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "alert('Informations');", true); 

Cách khác là gọi ja phương pháp vascript được viết trong trang nguồn

Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "xyz();", true); 
1

bạn có thể gọi hàm javascript từ mã đằng sau trang ..for Ví dụ, bạn có closewindow phần định nghĩa hàm trong javasript..if bạn muốn thực hiện chức năng đó, bạn có thể viết như sau mã trong bất kỳ sự kiện nhấp nào trong mã phía sau trang ..

ClientScript.RegisterClientScriptBlock(GetType(), "close", "<script language=javascript>Closewindow();</script>", false); 
Các vấn đề liên quan