2010-07-01 5 views

답변

0

당신은 또한 PageMethod를 사용할 수 있습니다. [WebMethod] 특성을 가진 페이지 클래스의 공용 정적 메서드입니다. ScriptManager에서 EnablePageMethods="true"을 수행하면 자바 스크립트에서 직접 페이지 메서드를 호출 할 수 있으며 일반적인 asp.net 페이지 수명주기를 건너 뜁니다. 파일 뒤에 페이지 클래스 코드에서

: (죄송합니다, 그것이 C#을, 그래서 VB를 모르는)

[WebMethod] 
public static void SaveValues(string[] vals) 
{ 
    // Save vals to database 
} 

귀하의 스크립트 관리자 :

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 

그리고 당신의 자바 스크립트 :

function save() 
{ 
    var values = ["Value1", "Value2", "Value3"]; 
    var userContext = null; // You can use this for whatever you want, or leave it out 
    PageMethods.SaveValues(values, save_success, save_error, userContext); 
} 

save_successsave_error은 성공 및 오류 콜백입니다. userContext은 원하는 모든 것일 수 있습니다. 수행됩니다 자바 스크립트 및 .NET 유형 사이에 http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

직렬화/역 직렬화 : 그것은 직접 jQuery를 사용하여 PageMethods를 호출 할 수도 있습니다

function save() 
{ 
    var values = ["Value1", "Value2", "Value3"]; 
    var userContext = null; // You can use this for whatever you want, or leave it out 
    PageMethods.SaveValues(values, function(result) { 
     alert("Values have been saved"); 
    }, 
    function(err) { 
     alert("Error"); 
    }); 
} 

: 당신은 또한 단지 폐쇄를 사용하여 성공 콜백 인라인을 정의 할 수 있습니다 자동으로 (.NET JavaScriptSerializer에 의해).

PageMethods는 주목을 많이 얻지는 않지만 매우 유용합니다. 오버 헤드를 상당히 줄이고 Page.RegisterStartupScript와 같은 것을 사용할 때 이상한 버그를 방지하는 asp.net 페이지 라이프 사이클 전체 (Page_Load, Page_LoadComplete 등)를 수행하지는 않지만 아직 만들 필요가 없습니다 클라이언트 코드 (javascript)에서 바로 간단한 호출을 만들기위한 완전한 웹 서비스 또는 REST 서비스. 업데이트 패널의 혼란보다 훨씬 우월합니다.

그러나 장소의 모든 곳에서 사용하고 있다면 응용 프로그램 설계에서 "관심사를 분리"하지 못할 수도 있습니다. 별도의 서비스 계층이 필요할 수 있습니다. RESTful 및 SOAP 끝점을 단일 서비스에 추가하고 클라이언트 코드 (REST 끝점 사용)에서 직접 메서드를 호출하거나 코드 숨김 파일 (Add를 통해 SOAP 끝점 사용)에서 메서드를 직접 호출 할 수 있으므로 WCF 서비스를 실제로 즐기고 있습니다. 서비스 참조).

생각을위한 음식.

1

HiddenField (runat = server)을 사용하여 해당 값을 저장할 수 있습니다. 쉼표로 구분 된 값 (array.join()). 값은 Viewstate에 저장됩니다.

+0

감사합니다. – TheGambler

+0

Btw,이 방법으로 Ajax가 필요 없다.) –

0

나는 팀에 의해 기술 된 방법을 사용뿐만 아니라 jQuery를 사용하고 this Page에서 JSON 라이브러리 및 코드와 배열을 구문 분석 :

var strArray = JSON.stringify(array); 
$("#<%=hidField.ClientID %>").val(strArray); 
1
Dim myJavaArray As Object, myValue As Variant, myArrayIdx As Long 
Set myJavaArray = SomeExistingJavaArrayObject 
' you can call .length like this because it is a property, not a method 
For myArrayIdx = 0 to myJavaArray.length step 1 
    myValue = CallByName(myJavaArray, CStr(myArrayIdx), VbGet) 
    ' do something with myValue here 
Next