sách gpt4 ai đã đi

Tương tác giữa javascript và nền c# trong asp.net

In lại Tác giả:qq735679552 Thời gian cập nhật: 2022-09-29 22:32:09 29 4
mua khóa gpt4 Nike

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ộng sợi dây ss()
 
    {
 
    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 nhau mộ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
< html xmln = "http://www.w3.org/1999/xhtml" >
< cái đầu chạy trốn = "máy chủ" >
  < tiêu đề >Trang không có tiêu đề tiêu đề >
 
  < kịch bản kiể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
  {
  cảnh báo(kết quả);
  }
 
  kịch bản >
 
cái đầu >
< thân hình >
  < hình thức nhận dạng = "biểu mẫu 1" chạy trốn = "máy chủ" >
  < asp: Trình quản lý tập lệnh NHẬ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
  asp: Trình quản lý tập lệnh >
  < phân chia >
   < đầu vào kiểu = "cái nút" nhấp chuột = "JsCallCSharp('xin chào')" />
  phân chia >
  hình thức >
thân hình >
html >

Cảnh hậu trường (tệp .cs).

?
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
sử dụng Hệ thống;
sử dụng Hệ thống.Cấu hình;
sử dụng Hệ thống.Dữ liệu;
sử dụng Hệ thống. Linq;
sử dụng Hệ thống.Web;
sử dụng Hệ thống.Web.Bảo mật;
sử dụng Hệ thống.Web.UI;
sử dụng Hệ thống.Web.UI.HtmlControls;
sử dụng Hệ thống.Web.UI.WebControls;
sử dụng Hệ thống.Web.UI.WebControls.WebParts;
sử dụng Hệ thống.Xml.Linq;
sử dụng Hệ thống.Dịch vụ.Web; //Thêm tham chiếu dịch vụ web
 
công cộng một phần lớp học _Mặc định: System.Web.UI.Page
{
  được bảo vệ vô hiệu Tải trang sự vật ngườ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ộng tĩnh sợi dây nói xin chào( sợi dây nói) //Lưu ý rằng trình sửa đổi hàm chỉ có thể là tĩnh
  {
   trở lại nó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
< html xmln = "http://www.w3.org/1999/xhtml" >
< cái đầu chạy trốn = "máy chủ" >
  < tiêu đề >Trang không có tiêu đề tiêu đề >
 
  < kịch bản kiể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
   {
   cảnh báo(res);
   });
  }
  kịch bản >
 
cái đầu >
< thân hình >
  < hình thức nhận dạng = "biểu mẫu 1" chạy trốn = "máy chủ" >
  < asp: Trình quản lý tập lệnh NHẬ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" >
  < Dịch vụ >< asp:Tham chiếu dịch vụ Con đường = "~/WebService.asmx" /> Dịch vụ >//Lưu ý rằng bạn cần tham chiếu đến dịch vụ web
  asp: Trình quản lý tập lệnh >
  < phân chia >
   < đầu vào kiểu = "cái nút" nhấp chuột = "JsCallCSharp('xin chào')" giá trị = "Kiểm tra trang nền C#" />
   < đầu vào kiểu = "cái nút" nhấp chuột = "JsCallWebService()" giá trị = "Kiểm tra lớp backend web" />
  phân chia >
  hình thức >
thân hình >
html >

Mã nền tảng dịch vụ web.

?
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
sử dụng Hệ thống;
sử dụng Hệ thống.Bộ sưu tập;
sử dụng Hệ thống. Linq;
sử dụng Hệ thống.Web;
sử dụng Hệ thống.Dịch vụ.Web;
sử dụng Hệ thống.Dịch vụ.Web.Giao thức;
sử dụng Hệ thống.Xml.Linq;
 
///
///Tóm tắt WebService
///
[WebService(Không gian tên = "http://tempuri.org/" )]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//Để 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ộng lớp học Dịch vụ Web: Hệ thống.Web.Services.WebService {
 
  công cộng Dị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ộng sợi dây Xin chào thế giới( sợi dây kết quả) {
   trở lại kế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ã:

?
1
2
3
4
5
6
7
8
9
10
11
.aspx
 hàm GetTitleID(obj)
 {
 Tiêu đềID=obj
  nếu như (sTitleID!= vô giá trị )
 tài liệu.getElementByIdx_x( "Trường ẩn1" ).giá trị=kiểu+ ',' +sMã tiêu đề;
  khác
 tài liệu.getElementByIdx_x( "Trường ẩn1" ).giá trị=kiểu+ ',0' ;
 }
 .cs
  sợi dây Giá trị ẩn = cái này .HiddenField1.Giá trị;

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! .

29 4 0
qq735679552
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com