2008-10-04 5 views
12

포스트 백을 수행하기 위해 업데이트 패널을 사용하지 않고 업데이트 패널 포스트 백을 다시 만들고 싶습니다. 이렇게하는 일반적인 방법은 무엇입니까?asp.net에서 jQuery를 사용하여 onclientclick 포스트를 다시 작성하는 방법

예를 들어 Stackoverflow에서 질문에 대해 위 또는 아래로 투표 할 때 데이터베이스를 다시 게시하기 위해 포스트 백을 수행하고 업데이트 패널을 사용하지 않았을 것입니다.

무엇이 있습니까?

테이블 데이터가있는 테이블이 있습니다. td 항목을 전체 열로 클릭하면 데이터베이스에 대한 업데이트를 수행하고 페이지 자체에서 gridview를 업데이트하려고합니다. gridview는 "our method"를 통해 업데이트 되었기 때문에 현재 테이블에있는 모든 클릭 된 항목을 표시합니다.

업데이트 패널이없는 많은 비동기 포스트 백에 사용할 수있는 훌륭한 일반적인 방법을 찾고 있습니다.

답변

17

스택 오버 플로우가 작동하는 방식은 CodeProject 기사의 두 가지 중요한 점에서 다릅니다.

  • 스택 오버플로는 독립 실행 형 ASPX 페이지가 아니라 ASP.NET MVC 컨트롤러 동작에 대한 AJAX 요청을 만들고 있습니다. 이것을 ASP.NET AJAX 페이지 메서드의 MVC 아날로그로 간주 할 수 있습니다. 두 경우 모두 ASPX 방법은 성능면에서 뒤떨어집니다.

  • Stack Overflow의 AJAX 요청은 임의의 일반 텍스트 또는 HTML이 아닌 JSON 직렬 결과를 반환합니다. 이것은 클라이언트 쪽에서 더 표준화되고 일반적으로 더 깨끗하게 처리합니다. 예를 들어

: 나는이 질문을 선정 할 때 XMLHttpRequest의 요청이 POST 데이터 2의 "voteTypeId"로/질문/171000/투표로 이루어졌다.

요청이 곳 테이블에 내 투표를 추가 처리 한 다음이 JSON으로 대응 컨트롤러

:

: 그 정보를 사용하여

{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2} 

는,이 자바 스크립트는 클라이언트 측 표시를 업데이트 돌봐

var voteResult = function(jClicked, postId, data) { 
    if (data.Success) { 
    jClicked.parent().find("span.vote-count-post").text(data.NewScore); 
    if (data.Message) 
     showFadingNotification(jClicked, data.Message); 
    } 
    else { 
    showNotification(jClicked, data.Message); 
    reset(jClicked, jClicked); 

    if (data.LastVoteTypeId) { 
     selectPreviousVote(jClicked, data.LastVoteTypeId); 
    } 
    } 
}; 

WebForms를 사용하는 경우 내 블로그에서 찾은 페이지 메서드를 호출하는 예가 분명합니다.

그러나 페이지 메서드 대신 중앙화 된 기능 (이 투표 예제와 같은)에 대해 웹 서비스를 고려하는 것이 좋습니다. 페이지 메소드는 작성하기가 약간 쉬워 보이지만 일부 재사용 단점이 있으며 실제 존재하지 않는 추가 보안 기능을 제공하는 경향이 있습니다.

당신이 발견 같은 일을하는 예이지만, 웹 서비스 (실제로 포스트에지도이 게시물에 대한 의견을 당신은 발견) :

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

+0

감사합니다 ... 나는 당신의 블로그에도 감사드립니다. –

+0

문제 없습니다. 희망이 도움이됩니다. –

+0

이 대답에 대해 한 가지 더 표현하고 싶습니다. 솔루션이 중앙 집중식 시스템이 아닌 경우 페이지 방법을 사용하십시오. –

2

표준 AJAX 호출을 사용하여이를 수행 할 수 있습니다. Page_Load 메서드에서 데이터베이스를 업데이트하는 .aspx 페이지를 만들고 업데이트 후의 현재 DB 값과 같은 원하는 정보를 XML로 표시합니다. 그런 다음 jQuery를 사용하여 해당 페이지에 대한 AJAX 호출을 작성하십시오.

HTML 조각 (즉, 업데이트 된 GridView)을 반환하고 jQuery를 사용하여 업데이트 된 HTML을 현재 페이지에 삽입 할 수도 있습니다.

편집 :이 페이지의 샘플 2는 당신이 원하는 것을 매우 근접해야합니다 :
http://www.codeproject.com/KB/ajax/AjaxJQuerySample.aspx

+0

그래서 아마이 방법에 유래입니다 그거야? –

+1

Dave Ward의 대답은 SO가 어떻게 작동하는지 설명합니다. – AaronSieb

2

link 내가 할 수있는 최선의 일이 될 날이 자바 스크립트와 웹 방법을 사용할 수 있도록 찾을 것입니다 .

관련 문제