asp.net을 사용하여 jQuery를 사용하여 onclientClick 게시물을 다시 만드는 방법

StackOverflow https://stackoverflow.com/questions/171000

문제

업데이트 패널을 사용하여 포스트 백을 수행하지 않고도 업데이트 패널 포스트 백을 재현하고 싶습니다. 이 작업을 수행하는 일반적인 방법은 무엇입니까?

예를 들어, stackoverflow에서 질문에 대해 투표 할 때 데이터베이스를 업데이트하기 위해 포스트 백이 수행되며 업데이트 패널을 사용하지 않았을 것입니다.

나는 무엇을 가지고 있습니까?

테이블 데이터가있는 테이블이 있습니다. 내가 클릭하면 td 항목 전체 열로, 데이터베이스에 대한 업데이트를하고 페이지 자체의 그리드 뷰를 업데이트하고 싶습니다. GridView는 "우리의 방법"을 통해 업데이트되었으므로 현재 클릭 된 모든 항목을 테이블에 표시합니다.

업데이트 패널이없는 많은 Async Postback에 사용할 수있는 좋은 일반 방법을 찾고 있습니다.

도움이 되었습니까?

해결책

스택 오버 플로우가 작동하는 방식은 해당 CodeProject 기사와 두 가지 중요한 방식으로 다릅니다.

  • 스택 오버플로는 독립형 ASPX 페이지가 아닌 ASP.NET MVC 컨트롤러 작업에 대해 AJAX 요청을합니다. 이것을 ASP.NET AJAX 페이지 메소드의 MVC 아날로그로 간주 할 수 있습니다. 두 경우 모두 ASPX 방법은 성능 측면에서 뒤쳐집니다.

  • 스택 오버 플로우의 AJAX 요청은 임의의 일반 텍스트 또는 HTML이 아닌 JSON 직렬화 된 결과를 반환합니다. 이로 인해 클라이언트 측에서 처리를보다 표준화하고 일반적으로 깨끗하게 처리합니다.

예를 들어 :이 질문에 투표했을 때 XMLHTTPREQUEST 요청은/Question/171000/vote에 이루어졌으며 게시물 데이터의 "VoteTypeId"가 2 개입니다.

요청을 처리 한 컨트롤러는 내 투표를 어딘가에 테이블에 추가 한 다음이 JSON으로 응답했습니다.

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

이 정보를 사용 하여이 JavaScript는 클라이언트 측 디스플레이를 업데이트해야합니다.

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/

다른 팁

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

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

편집 :이 페이지의 샘플 2는 원하는 것과 매우 가깝습니다.
http://www.codeproject.com/kb/ajax/ajaxjquerysample.aspx

이것 링크 내가 가장 좋은 일이며 JavaScript 및 웹 방법을 사용할 수있는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top