2013-06-06 1 views
1

상태 정보는이 페이지에 대한 유효하고아약스 무효화 viewstate가

손상이 꽤 자주있는 질문 것으로 보인다 될 수 있습니다. 그러나 나는 아직 기본 쟁점이 다루어 진 게시물을 찾지 못했다.

나는 심각하게 ajaxed 응용 프로그램을 가지고 있으며 이것에 대해 연구 중이다. 간단히 말해 ASPX 페이지는 AJAX 호출에 의해 HTML로 채워지는 일련의 div보다 더 많이 사용됩니다. 누구든지이 기본 질문에 대한 의견이 있으면 크게 감사하겠습니다. 샘플 앱을 시작하고 그 앱에 대해서도 답변을 볼 수 있는지 확인합니다.

  1. runat=server 컨트롤을 제거하면 Ajax가 발생합니다.
  2. runat=server 컨트롤에 의해 생성 된 HTML이있는 DIV를 채우는 경우이를 트리거합니다.
  3. ajax ctl의 일부로 컨트롤을 반환하기 전에 runat=server 컨트롤을 Lobotomize하는 방법이 있습니까?

(예를 들어 - 리피터는 테이블을 구축하는 정말 좋은 나는 만약 내가 루핑을 할 수있는 I 클라이언트에 대한 응답을 보내기 전에 HTML에서 몇 가지 구문을 제거 을 다음 중계기를 사용하고 있습니다.. .. )

4)이 모든 것을 사라지게 할 수있는 헤더가 있습니다.

Page Language="vb" 
AutoEventWireup="false" 
CodeBehind="frustration.aspx.vb"      
_Inherits="Portal.frustration" 
EnableViewState="false" 
enableViewStateMAC="false" 
EnableEventValidation="false" 
ValidateRequest="false" 
ViewStateEncryptionMode="Never" 
MasterPageFile="~/_MasterPages/Admin.Master" 

감사합니다. greg.

+0

아약스를 사용하려면 아약스를 사용하세요. 당신이하고있는 것을 실제로 알지 못해 포스트 백과 함께 섞으면 추악해질 것입니다. –

+0

아약스를 사용하여 HTML을 채우는 방법을 잘 모르겠습니다. 하지만 당신의 Ajax 응답에있는 HTML에 viewstate 필드가 없는지 확인하십시오. 또한 현재 페이지의 viewstate가 Ajax 응답에 의해 덮어 쓰이거나 수정되지 않도록 확인하십시오. 이것은 일반적으로 다른 페이지의 html을 귀하의 현재 상태로 완전히 내 버릴 때 발생합니다. [ – Jags

+0

변경 한 내용과 페이지를 중단 시키거나 페이지와 함께 보내지 않은 내용을 찾아야합니다. 대부분의 컨트롤에서 일부 viewstate를 사용하지 않도록 설정하고 중단하려는 항목을 찾으려고 할 수 있습니다. – Aristos

답변

1

글쎄, 작동하도록 만들었지 만, 어쨌든 .NET 메뉴를 포기할 것입니다. 몇 가지 고급 정보를 찾고 있었기 때문에 커뮤니티에서 내가 할 수있는 일을 할 수있게되었습니다.

AJAX 페이지를로드 한 다음 메뉴를 사용하여 탐색하면 viewstate 문제가 발생합니다. 메뉴를 클릭하면 내 AJAX 페이지가 다시 탐색되기 전에 다시 게시되기 때문에 발생합니다. 그것이 단지 하이퍼 링크 였다면 아무런 문제가 없을 것입니다.

문제의 AJAX 페이지는 본질적으로 3div입니다. Div_A는 문서 목록으로 구성된 탐색 요소입니다. 012_BDiv_B는 일부 작업 버튼이있는 문서 1 개에 대한 읽기 전용 정보입니다. Div_C는 입력 양식입니다. div는 jquery ajax 호출로 채워집니다. 성공하면 문제의 DIV의 전체 innerHTML을 대체합니다. Div_A & Div_B는 순서대로 페이지로드시 자동으로 채워집니다. (목록 및 첫 번째 문서 세부 정보)

Div_A를 채우기 만하면 문제가 발생합니다. 검사에서 RUNAT = SERVER가있는 DIV가 있음을 확인했습니다. 나는 그것을 제거했다. 이것은 문제를 해결하지 못했습니다. 전체 콘텐츠에 FORM도있었습니다. 양식에 runat = server라는 태그가 지정되었습니다. 양식을 완전히 삭제했습니다. 이것은 내가 viewstate 오류없이 메뉴를 사용할 수있었습니다. 그러나, 두 번째 문서를 클릭하면 Div_B가 다시로드됩니다. 문제가 다시 발생했습니다.

Div_B에는 모두 같은 형식의 FORM이 있습니다. (이들은 Visual Studio에 의해 자동으로 배치되어야합니다.DIV_A와 DIV_B가 모두 읽기 전용 인 이유는 없습니다. DIV_B의 흥미로운 점은 코드에서 innerText를 설정 했으므로 RUNAT = SERVER가있는 DIV가 있다는 것입니다. FORM을 제거하면 문서간에 이동하면서도 VIEWSTATE 오류없이 메뉴를 계속 사용할 수 있습니다.

그래서 : 페이지에 추가 갖는 RUNAT = 서버에 HTML 요소는 RUNAT = SERVER 양식이 페이지에 추가 갖는 것은 viewstate가 휴식하는 것 않습니다 viewstate가 을 중단하지 않는 것 같습니다.

다시 돌아가지만이 문제는 갑자기 왜곡 되었습니까? 확실하지 않다. 많은 것이 바뀌었고 어떤 것도 지적 할 수 없습니다. (아마도 vs10에서 vs12로 업그레이드 할 때 FORM이 자동 생성됩니다.) 누가 알 겠어, 누가 신경 쓰는지 ...

궁극적으로 - 나는 .NET 메뉴 항목을 위해서만이 문제를 해결할 수 없다. @Brad M의 요점은 jQuery 메뉴를 사용하기로 결정했기 때문에이 페이지에 대한 도매 페이지 다시 게시가 제거됩니다.

조금만 살펴보면 arnab_bandyopadhyays의 가로형 jQuery 메뉴 구현을 알 수 있습니다 : http://jsfiddle.net/yRJ9g/.

<<stackoverflow wants some code if i reference jsfiddle, so here ya go...>> 
dim viewStateWorksWellWAjax as boolean =false 

제안 해 주셔서 감사합니다.

그레그