ASP.NET2.0 클라이언트 리셋 없음

개술
Asp.net 페이지의 기본 모델에서 사용자는 페이지와 상호작용을 하고 단추를 누르거나 실행하면 답장을 하는 동작을 수행합니다. 이 때 페이지와 컨트롤을 다시 만들고 서버에서 페이지 코드를 실행하며 새로 생성된 페이지는 브라우저에 나타납니다.그러나 많은 상황에서 우리는 이러한 수요가 있다(예를 들어 클라이언트 스크립트가 상태 정보를 유지하고 서버의 왕복 처리 비용을 절약하는 등). 클라이언트로부터 서버 코드를 실행해야 할 뿐만 아니라 답장을 실행하지 않아야 한다.Asp.net2.0의 클라이언트 리셋 메커니즘은 이런 수요를 충족시킬 수 있다.클라이언트 콜백에서 클라이언트 스크립트는 Asp.net 페이지에서 요청을 보내면, 이 페이지는 '특별 표시' 방법으로 요청 처리를 실행하고, 브라우저에 다른 클라이언트 스크립트 함수로 읽을 수 있는 값을 되돌려줍니다.클라이언트 콜백 구성 요소 클라이언트 콜백을 위한 Asp. 만들기net 페이지는 다음과 같은 몇 가지 측면을 포함해야 한다. 페이지의 서버 사이드 코드는 반드시=>ICallback EventHandler 인터페이스를 실현해야 한다.모든 Asp.net 페이지에 이 인터페이스 설명을 추가합니다. =>RaiseCallbackEvent 접근 방식을 제공합니다.이 방법은 서버에 대한 리셋을 실행하기 위해 호출될 것입니다. =>GetCallbackResult 방법을 제공합니다.이 방법은 리셋 결과를 클라이언트에게 되돌려줍니다.또한 이 페이지는 다음과 같은 세 가지 클라이언트 스크립트 함수를 포함해야 한다. =>첫 번째는 함수 호출 도움말 방법으로 서버에 대한 실제 요청을 수행한다.이 함수에서 먼저 사용자 정의 논리를 실행하여 이벤트 파라미터를 준비할 수 있습니다. 이 파라미터는 문자열 형식으로 서버측 리셋 이벤트 처리 프로그램에 전송됩니다. =>두 번째는 클라이언트 리셋 함수입니다. 이 함수는 서버측 리셋 이벤트 처리 프로그램이 리셋한 결과를 수신합니다. =>세 번째 함수는 서버 측의 실제 요청을 실행하는 도움말 함수입니다.서버 코드에서 GetCallback Event Reference 방법을 사용하여 이 함수에 대한 참조를 생성할 때 Asp.net에서 자동으로 이 함수를 생성합니다.샘플 분석과 결합하여 Client 설정Callback3.aspx 페이지, UI 섹션:
<%@ Page Language="C#"AutoEventWireup="true"CodeFile="client_callback3.aspx.cs"Inherits="client_callback3"%>
function getAgeByName() { var context = ""; var name = document.getElementById('txtName').value; <%= Page.ClientScript.GetCallbackEventReference(this, "name", "ReceiveDataFromServer", "context") %>; } function ReceiveDataFromServer(retVal) { document.getElementById('result').innerText = retVal; }
code-behind 섹션:
using System; public partial class client_callback3 : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler { private System.Collections.Generic.Dictionary _Person = new System.Collections.Generic.Dictionary(); public System.Collections.Generic.Dictionary Person { get { if (!Equals(ViewState["Person"], null)) { return ViewState["Person"] as System.Collections.Generic.Dictionary; } else return null; } set { ViewState["Person"] = value; } } string callbackVal = string.Empty; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { _Person.Add("Allan", 24); _Person.Add("Kaori", 23); _Person.Add("Vincent", 22); _Person.Add("George", 21); Person = _Person; } } void System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) { this.callbackVal = eventArgument; } string System.Web.UI.ICallbackEventHandler.GetCallbackResult() { return this.callbackVal + "'age is "+ Person[this.callbackVal].ToString(); } }
UI의 getageByName은 위에서 말한 첫 번째 스크립트 함수에 대응하고 Receive DataFrom Server는 두 번째 함수에 대응하는 클라이언트 리셋 함수입니다. code-behind 페이지 클래스는 인터페이스 ICallback Event Handler를 계승하고 RaiseCallback Event와 GetCallbackResult 방법을 실현했습니다.RaiseCallbackEvent 방법에는 클라이언트로부터 전송되는 스트링 유형의 매개 변수가 있습니다.GetCallbackResult 방법은string 형식의 값을 되돌려줍니다. 이 값은 클라이언트의 리셋 함수에 의해 수신됩니다.여러분은 아마도 또 하나의 클라이언트 함수가 어디로 갔는지 알아차렸을 것입니다.이것은 서버에서 GetCallback Event Reference 방법을 호출하여 이 함수에 대한 인용을 생성할 때 Asp.Net2.0이(가) 자동으로 생성됩니다.우리는 html의 원본 파일을 보면 이 함수(WebForm DoCallback(' Page', name, Receive DataFrom Server, context,null,false);)를 알 수 있다.질문 1, GetCallback Event Reference 방법: 클라이언트 함수에 대한 인용을 가져오고, 이 함수를 호출하면 서버 쪽 이벤트에 대한 클라이언트 리셋을 시작합니다.내 이해에 따르면 이 방법은 클라이언트가 파라미터를 서버에 전달할 수 있도록 하는 것이다.이 방법은 네 개의 매개 변수를 포함하는데 그것이 바로 GetCallback Event Reference(this, "name", "Receive DataFrom Server", "context")이다. 그 매개 변수는 다음과 같다. 첫 번째 매개 변수는 ICallback Event Handler 인터페이스를 계승하는 컨트롤러이다.두 번째 파라미터는 클라이언트에서 서버로 전달되는 파라미터 값이다.세 번째 매개 변수는 클라이언트 리셋 함수이다.네 번째는 상하문이다.

좋은 웹페이지 즐겨찾기