Asp 페이지 클라이언트 콜백 기능, 즉 ICallback EventHandler 인터페이스 사용 노트
26293 단어 callback
페이지 코드:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RandomNumber.aspx.cs" Inherits="RandomNumber" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title> Web </title>
8 <script type="text/javascript">
9 function GetNumber()
10 {
11 UseCallback();
12 }
13
14 function GetRandomNumberFromServer(TextBox1, context)
15 {
16 document.forms[0].TextBox1.value =TextBox1;
17 }
18 </script>
19 <script type="text/javascript">
20 function CallServer(index)
21 {
22 UseServerEvent(index);
23 }
24
25 function GetValueFromServer(value, value2)
26 {
27 document.forms[0].TextBox2.value =value;
28 //alert(value);
29 //alert(value2);
30 }
31 </script>
32 </head>
33 <body>
34 <form id="form1" runat="server">
35 <div>
36 <input type="button" id="Button1" value="Get Random Number" onclick="GetNumber()" />
37 <br />
38 <br />
39 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
40 </div>
41 <hr />
42 <h3> </h3>
43 <div>
44 <input type="button" id="Button2" value="Get Return Value" onclick="CallServer('Jolin')" />
45 <br />
46 <br />
47 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
48 </div>
49 <hr />
50 </form>
51 </body>
52 </html>
백그라운드 코드:
1 using System;
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13
14 public partial class RandomNumber : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
15 {
16 private string _callbackResult = null;
17 protected void Page_Load(object sender, EventArgs e)
18 {
19 if (!IsPostBack)
20 {
21 /* :
22 cbReference:
23 WebForm_DoCallback('__Page',arg,GetRandomNumberFromServer,context,null,false)
24
25 cbScript:
26 function UseCallback(arg, context){WebForm_DoCallback('__Page',arg,GetRandomNumberFromServer,context,null,false);}
27
28 html JS:
29 <script type="text/javascript">
30 //<![CDATA[
31 function UseCallback(arg, context)
32 {
33 WebForm_DoCallback('__Page',arg,GetRandomNumberFromServer,context,null,false);
34 }
35 //]]>
36 </script>
37 * */
38
39 /*cbReference JS , :GetRandomNumberFromServer( n>-1 )
40 * this:
41 * arg: Asp.Net (WebForm_DoCallback) 2
42 * context: Asp.Net (WebForm_DoCallback) 4
43 * */
44 string cbReference = Page.ClientScript.
45 GetCallbackEventReference(this, "arg", "GetRandomNumberFromServer", "context");
46
47 /*UseCallback JS , aspx A,
48 UseCallback ( )。
49 * */
50 string cbScript = "function UseCallback(arg, context)" +
51 "{" + cbReference + ";}";
52
53 /*
54 * RegisterClientScriptBlock , JS 。
55 * “<script type="text/javascript"></script>” , true。
56 * */
57 Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
58 "UseCallback", cbScript, true);
59
60
61 // ( "Jolin")
62 string cbReference2 = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetValueFromServer", "context");
63 string cbScript2 = "function UseServerEvent(arg, context)" +
64 "{" + cbReference2 + ";}";
65 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseServerEvent", cbScript2, true);
66 }
67
68 }
69
70 #region ICallbackEventHandler Members
71
72 public string GetCallbackResult()
73 {
74 return _callbackResult;
75 }
76
77 public void RaiseCallbackEvent(string eventArgument)
78 {
79 if (string.IsNullOrEmpty(eventArgument) || !("Jolin".Equals(eventArgument)))
80 {
81 Random rnd = new Random();
82 _callbackResult = rnd.Next().ToString();
83 }
84 else
85 {
86 _callbackResult = "Jolin, I love you!";
87 }
88 }
89
90 #endregion
91 }
테스트 결과:
첫 번째 버튼인'Get Random Number'를 클릭하면 그 아래 입력란에 무작위 숫자가 표시되고, 두 번째 버튼인'Get Return Value'를 클릭하면'Jolin, I love you!'로 돌아갑니다.
설명:
상술한 코드에는 이미 몇 가지 해석이 포함되어 있습니다. 다음은 전체 절차를 대상으로 자신의 이해에 따라 해석하는 것입니다. 만약에 잘못된 점이 있으면 아낌없이 가르쳐 주십시오!
1. 클라이언트가 직접 또는 간접적으로 함수를 호출한다: UseCallback()이고 함수 UseCallback()는 서버 측에서 동적으로 출력한다. 리셋 기능이 있는 함수(파라미터가 있음) 2. 서버가 클라이언트에게 전달한 정보를 수신하고 ICallback EventHandler 인터페이스를 호출하는RaiseCallback Event(string eventArgument) 함수를 포함한다.분석(eventArgument)과 계산을 한 다음GetCallbackResult()을 통해 클라이언트 3, 클라이언트가 서버의 계산 결과를 받는 함수인 GetValueFromServer()는 이미 UseCallback()에 표시되어 있기 때문에 값을 GetValueFromServer() 함수에 전달하고 HTML 컨트롤 값을 부여하여 사용자에게 나타낼 수 있습니다.
자, 앞으로 리콜도 배워야 돼요. 그때 새로운 이해가 있으면 다시 올게요.
**참고: 문자를 부호화하는 과정에서 정원의 입력 컨트롤이 약간 버그인 것을 발견했습니다. 영문 상태(따옴표 포함)의 문자를 밖에서 편집 상자로 복사하면 그 뒤에 있는 중국어 따옴표가 변모할 수 있습니다.'->','->'를 빼면 정상입니다. 복제된 문자에 형식이 있을 수 있으니 높은 사람이 대답해 주십시오.
연.
2012.03.29
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.