In lạiTác giả:qq735679552Thời gian cập nhật: 2022-09-29 22:32:09294
CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN "Tương tác giữa JavaScript và backend C# trong ASP.NET" này được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, vui lòng thích nó.
Gần đây tôi đã làm một dự án nhỏ, trong đó tôi nhúng Google Maps vào một trang web. Bằng cách nhập tọa độ kinh độ và vĩ độ, tôi có thể xác định vị trí trên bản đồ và thêm một điểm đánh dấu. Bằng cách nhấp vào điểm đánh dấu, tôi có thể lấy dữ liệu camera từ xa và phát trong cửa sổ video. Trong quá trình vận hành thực tế, vì dữ liệu vĩ độ, kinh độ và dữ liệu tên người dùng, mật khẩu của video đăng nhập phải được trích xuất từ cơ sở dữ liệu nền và phiên bản thứ ba của Google Maps API được triển khai bằng JavaScript, nên không thể tránh khỏi việc tập lệnh giao diện người dùng cần tương tác với nền. Vì được triển khai trong ASP.NET nên vấn đề đặt ra là làm thế nào để tương tác giữa javascript trong ASP.NET và C# ở phía sau.
Có bốn khía cạnh chính của các cuộc gọi lẫn nhau giữa mã C# và các hàm javascript:
1. Làm thế nào để truy cập các hàm C# trong JavaScript?
2. Làm thế nào để truy cập các biến C# trong JavaScript?
3. Làm thế nào để truy cập các biến JavaScript hiện có trong C#?
4. Làm thế nào để truy cập các hàm JavaScript trong C#?
1. Thực thi hàm trong mã C# trong hàm javascript: Phương pháp 1: Kết hợp page và lớp page 1. Hàm được khai báo là public.
Mã nền (bạn cũng có thể thay đổi từ public thành protected).
?
1
2
3
4
5
6
7
công cộngsợi dâyss()
{
trở lại("Một");
}
2. Sử dụng <%=ss()%> trong HTML để gọi // là tên của hàm nền trong C#.
Kịch bản giao diện.
?
1
2
3
4
5
6
7
khác nhaumột = "<%=ss()%>";//Gọi hàm backend C# trong JavaScript
cảnh báo(a);
Phương pháp 2: JavaScript gọi phương thức được định nghĩa trong trang ASP.Net một cách không đồng bộ 1. Khai báo phương thức là public; 2. Khai báo phương thức là phương thức lớp (static trong C#, Shared trong VB.NET) thay vì phương thức thể hiện; 3. Thêm thuộc tính [WebMethod] vào phương thức 4. Đặt thuộc tính EnablePageMethods của điều khiển ScriptManager trong trang thành true; 5. Sử dụng cú pháp JavaScript sau trên máy khách để gọi phương thức trang PageMethods.[MethodName](param1,param2,...,callbackFunction); 6. Chỉ định hàm gọi lại cho lệnh gọi không đồng bộ của máy khách, chấp nhận giá trị trả về trong hàm gọi lại và xử lý tiếp; 7. Thêm using System.Web.Services;.
Ví dụ:
Mã JavaScript ở giao diện người dùng.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hai mươi mốt
hai mươi hai
hai mươi ba
hai mươi bốn
25
26
27
<htmlxmln="http://www.w3.org/1999/xhtml">
<cái đầuchạy trốn="máy chủ">
<tiêu đề>Trang không có tiêu đềtiêu đề>
<kịch bảnkiểu="văn bản/javascript">
hàm JsCallCSharp(param1)
{
PageMethods.sayhell(param1,onSayHelloSucceeded); //sayhell là một phương thức được đánh dấu bằng thuộc tính [webMethod] trong nền. Param1 là tham số được truyền vào phương thức và onSayHelloSucceeded là một hàm gọi lại chủ yếu được sử dụng để xử lý thêm các kết quả trả về bởi nền.
}
hàm onSayHelloSucceeded(result) //hàm gọi lại ràng buộc
<asp: Trình quản lý tập lệnhNHẬN DẠNG="Trình quản lý tập lệnh1"chạy trốn="máy chủ"Kích hoạtPageMethods="ĐÚNG VẬY">//Điều khiển ScriptManager quản lý các tập lệnh. Lưu ý rằng thuộc tính EnablePageMethods="true" được đặt
sử dụngHệ thống.Dịch vụ.Web;//Thêm tham chiếu dịch vụ web
công cộngmột phầnlớp học_Mặc định: System.Web.UI.Page
{
được bảo vệvô hiệuTải trangsự vậtngười gửi, EventArgs e)
{
}
[Phương pháp Web]//Được đánh dấu là thuộc tính phương thức dịch vụ web
công cộngtĩnhsợi dâynói xin chào(sợi dâynói)//Lưu ý rằng trình sửa đổi hàm chỉ có thể là tĩnh
{
trở lạinói;
}
}
Phương pháp 3: JavaScript gọi phương thức được xác định trong lớp dịch vụ Web một cách không đồng bộ.
1. Thêm một dịch vụ web và đánh dấu dịch vụ đó là cho phép sử dụng ASP.NET AJAX để gọi dịch vụ web này từ các tập lệnh.
Thuộc tính tương ứng là [System.Web.Script.Services.ScriptService].
2. Khai báo phương thức là public và đánh dấu nó là phương thức thuộc tính [webMethod] 3. Thêm điều khiển ScriptManager vào trang và thêm tham chiếu dịch vụ web.
.
4. Sử dụng cú pháp JavaScript sau để gọi phương thức dịch vụ web trên máy khách.
WebService.HelloWorld("helloWord",function(res)//Webservice là tên của trang dịch vụ web.
HelloWord là một phương thức trong lớp trang dịch vụ web và hàm là hàm JavaScript gọi lại chủ yếu xử lý kết quả trả về { alert(res); }); .
Ví dụ:
Mã trang.
.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hai mươi mốt
hai mươi hai
hai mươi ba
hai mươi bốn
25
26
27
28
29
30
31
32
33
34
35
36
37
<htmlxmln="http://www.w3.org/1999/xhtml">
<cái đầuchạy trốn="máy chủ">
<tiêu đề>Trang không có tiêu đềtiêu đề>
<kịch bảnkiểu="văn bản/javascript">
hàm JsCallCSharp(param1)
{
PageMethods.sayHello(param1,onSayHelloSucceeded);
}
chức năng onSayHelloSucceeded(kết quả)
{
cảnh báo(kết quả);
}
//Phương pháp này là hàm được gọi
hàm JsCallWebService()
{
WebService.HelloWorld("helloWord",function(res)//Gọi dịch vụ web
//Để cho phép gọi dịch vụ Web này từ các tập lệnh sử dụng ASP.NET AJAX, hãy bỏ chú thích ở dòng sau.
[Hệ thống.Web.Script.Services.ScriptService]//Lưu ý rằng bạn cần thêm dấu này
công cộnglớp họcDịch vụ Web: Hệ thống.Web.Services.WebService {
công cộngDịch vụ Web () {
//Nếu bạn sử dụng thành phần được thiết kế, hãy bỏ chú thích dòng sau
//Khởi tạo thành phần();
}
[Phương pháp Web]//Thuộc tính phương thức cần được đánh dấu
công cộngsợi dâyXin chào thế giới(sợi dâykết quả) {
trở lạikết quả;
}
}
2. Phương pháp 1 để JavaScript truy cập các biến C#: a. Truy cập thông qua các trường ẩn trên trang và lưu giá trị biến C# vào trường văn bản ẩn ở chế độ nền.
b. Sau đó lấy trực tiếp giá trị của trường văn bản ẩn trong javascript ở front-end. document.getElementByIdx_x('xx').giá trị.
Phương pháp 2: a. Sau khi gán giá trị cho các biến ở phía máy chủ, hãy đăng ký tập lệnh Page.RegisterStartScript(" ",""); value là biến nền, sau đó giá trị của vary có thể được truy cập trực tiếp trong javascript và giá trị của nó là giá trị của biến nền value. Phương pháp này chỉ là một cách gián tiếp để truy cập các biến C#. 3. Phương pháp 1 để truy cập các biến hiện có của JavaScript trong C#: Sử dụng trường ẩn của điều khiển văn bản máy chủ ở phía trước và ghi giá trị biến js vào đó; truy cập trực tiếp và gọi nó thông qua id điều khiển ở chế độ nền, nghĩa là sử dụng Request["id"] ở chế độ nền để lấy giá trị.
Phương pháp 2: Bạn có thể sử dụng cookie hoặc phiên để lưu trữ các giá trị biến và sử dụng phiên trực tiếp trong nền. Sau đây là một đoạn mã:
?
1
2
3
4
5
6
.cs
nếu như(Phiên họp["Tên trang web"== vô giá trị)// Xác định xem có biến Session nào có giá trị Key được chỉ định không
Phiên họp"Tên trang web"] = "";//Tạo một biến Session nếu nó không tồn tại
//Gán giá trị cho biến Session["siteName"]
.aspx
var siteName="<%=Phiên["Tên trang web"] %>";
4. Phương pháp 1 để thực thi các hàm JavaScript và gọi các hàm JavaScript từ mã C#: Sử dụng ScriptManager.RegisterStartupScript(this, this.GetType(), "edit", "CSharpCallJs('"+param1+"','"+param2+"')" trong C#.
Ví dụ:
Chức năng script.
?
1
2
3
4
hàm CSharpCallJs(param1,param2)
{
cảnh báo(param1 + param2);
}
Mã nền trang.
?
1
ScriptManager.Đăng kýStartupScript(cái này, cái này.GetType(), "biên tập", "CSharpCallJs('"+ tham số1 + "','"+ tham số2 + "');", ĐÚNG VẬY);//Mã khóa gọi mã hàm tập lệnh trang
Phương pháp 2: Sử dụng các trường ẩn hoặc điều khiển Literal, sử dụng các tập lệnh js ở phía trước để ghi một số giá trị được điều khiển bởi các hàm js vào các trường ẩn hoặc điều khiển Literal, sau đó sử dụng Hidden.Value hoặc Literal.Text ở phía trước để đọc các giá trị ở phía trước. Sau đây là đoạn mã:
Phương pháp 3: Page.RegisterStartupScript("function",""),
Trên đây là phương pháp tương tác giữa javascript và background c# trong asp.net. Mỗi tình huống có một giải pháp tương ứng. Tôi hy vọng nó có thể giúp ích cho mọi người.
Cuối cùng, bài viết này về tương tác giữa javascript và background c# trong asp.net kết thúc tại đây. Nếu bạn muốn biết thêm về tương tác giữa javascript và background c# trong asp.net, vui lòng tìm kiếm các bài viết trên CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi đang cố gắng hiểu sâu hơn về ASP.Net MVC và tôi bắt đầu nhận ra rằng nó trông rất giống với tập lệnh ASP thô. Trước đây, chúng ta tổ chức "mô hình"/mã logic nghiệp vụ thành các lớp VBScript hoặc các thành phần VB COM. Tất nhiên, bây giờ
Tôi đã tìm kiếm một thời gian nhưng có vẻ như không thể tìm ra câu trả lời. Tôi muốn hiển thị một bộ đếm trong băng chuyền của mình với dự án (công việc) hiện tại ở bên trái và tổng số dự án ở bên trái. Mã của tôi:
Tôi có một trang web được tạo bằng Visual Studio 2010/.net 4/VB. Tôi thực sự thích giao diện của hệ thống FAQ mà tôi tìm thấy vì nó đơn giản nhưng vẫn mang phong cách asp cổ điển. Vì vậy, rõ ràng là tôi không thể đưa bố cục trang chính của mình vào
Được rồi, câu hỏi này có lẽ đã có câu trả lời khá rõ ràng đối với nhiều người, nhưng nó vẫn khiến tôi bối rối. Tôi có một biểu mẫu web asp.net với hai điều khiển trên đó (thực ra còn nhiều hơn hai điều khiển này, nhưng chúng ta sẽ tập trung vào những điều khiển này) - điều khiển đầu tiên là asp:dr
Khi tôi thiết lập điều khiển ASP.NET CheckBox làm trình kích hoạt postback không đồng bộ cho bảng điều khiển cập nhật asp.net, thuộc tính EventName là gì? Tôi tin rằng câu trả lời tốt nhất là CheckedChanged. Giới thiệu về asp.net - a
Tôi có một trang web (lớn) được viết bằng ngôn ngữ asp cổ điển. Bây giờ tôi phải chuyển sang vb.net (razor). Có cách nào để kết hợp hai thứ này cho đến khi quá trình chuyển đổi hoàn tất không? Có cách nào để làm cho ứng dụng hoạt động với cả asp cổ điển và vb.net không?
Tôi vừa mới chuyển đổi một ứng dụng ASP cổ điển sang ASP.NET 3.5, nhưng tôi cảm thấy phiên bản ASP cổ điển của mình chạy nhanh hơn một chút (có thể là do hối hận vì đã mua, tôi không biết nữa). Vậy các bạn có thể giúp tôi giải đáp thắc mắc này và cho tôi biết cái nào nhanh hơn, asp hay asp.
Bắt đầu từ tuần này, tôi được yêu cầu bắt đầu học cách phát triển trang web bằng ASP. Tôi có một số kinh nghiệm với C# thông qua XNA, nên phần này không gây nhiều khó khăn cho tôi. Tôi đã làm theo Hướng dẫn Cửa hàng âm nhạc yêu cầu tôi phải thiết lập
đóng cửa. Câu hỏi này cần được hỏi một cách tập trung hơn. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện điều này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 8 năm trước. Cải thiện câu hỏi này
Tôi muốn đăng một số biến biểu mẫu vào trang ASP cổ điển. Tôi không muốn thay đổi các trang ASP cổ điển vì khối lượng công việc cần phải thực hiện và số lượng trang sử dụng chúng. Các trang ASP cổ điển cần phải truyền các biến biểu mẫu Username và Userpas
Hoàn thành. Câu hỏi này đang tìm kiếm các đề xuất về sách, công cụ, thư viện phần mềm, v.v. Nó không đáp ứng được các hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Chúng tôi không chấp nhận những câu hỏi tìm kiếm lời khuyên về sách, công cụ, thư viện phần mềm, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để
Theo một cách nào đó, đây có thể là một câu hỏi dị giáo. Chúng tôi có một trang web lớn với nhiều trang vẫn còn sử dụng ASP. Thông thường, không có gì thực sự động, mà là các khối HTML được tạo lại theo định kỳ (thông qua SSI hoặc Server.Execute). Có vẻ như một
đóng cửa. Câu hỏi này cần được hỏi một cách tập trung hơn. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện điều này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện câu hỏi này
Tôi có một ứng dụng ASP cũ - vào một thời điểm nào đó trong tương lai gần - cần được di chuyển sang ASP.Net 2.0 (để tương thích với các ứng dụng khác cũng sử dụng 2.0). Có cách thực hành tốt nhất nào cho loại việc này không, tức là bước đầu tiên là chuyển đổi html hiện tại thành vbs
Hiện tại tôi đang làm việc cho một công ty sử dụng kết hợp ASP.NET Webforms và các trang ASP cũ để phát triển web. Điều này hoạt động tốt cho dự án hiện tại của họ, nhưng tôi muốn thuyết phục/gợi ý họ chuyển sang ASP.NET MVC vì
Tôi có một ứng dụng asp cổ điển. Tôi muốn đăng mẫu cuộc thi của trang đó lên mẫu Asp.Net. Lý do là tôi muốn sử dụng nhiều logic mà tôi đã xây dựng vào các trang Asp.Net của mình để xác thực trước khi chuyển đến cơ sở dữ liệu và tôi không biết nhiều về asp. Chưa kể đến
Tôi biết trong ASP.NET MVC bạn có thể có một View di động và thực hiện một số thao tác như Index.mobile.cshtml. và _Layout.mobile.cshtml và máy chủ biết cách tải các View này
Tôi cần gọi một hàm VBscript trên một trang asp cổ điển từ một số mã c# .net phía máy chủ - có ai biết cách rõ ràng để thực hiện việc này không? Viết lại hàm trong .net không phải là một lựa chọn. Tôi sẽ giải thích điều này thêm một chút.
Tôi là một lập trình viên xuất sắc, rất giỏi!