Query String을 전달할 필요가 없도록 ViewState를 사용해야합니까?

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

  •  05-07-2019
  •  | 
  •  

문제

확장 가능한 몇 가지 목록이있는 페이지가 있습니다. 완벽한 세상에서는 이러한 각 목록에 대한 링크를 표시하고 싶습니다. 클릭하면 특정 목록이 표시된 상태에서 페이지를 다시로드합니다. ViewState는 숨겨진 입력 필드, 쿼리 문자열 등의 필요성을 제거 할 수 있지만 개념에 익숙하지 않습니다.

기본적으로 두 가지를 달성해야합니다.

  1. 링크를 클릭 할 때 목록의 ID를 viewstate obj에 추가합니다.
  2. ViewState OBJ에서 ID를 읽으십시오. 페이지가로드되면 해당 목록을 표시합니다.

누구 든지이 주제에 대한 리소스 및/또는 도움을 제공 할 수 있습니까? 감사!

도움이 되었습니까?

해결책

ViewState는 본질적으로 페이지 상단에 저장된 긴 인코딩 된 숨겨진 필드입니다. 그것과 정기적 인 숨겨진 필드의 주요 차이점은 ASP .NET이 그것을 해독하고 포스트 백에서 자동으로 구문 분석한다는 것입니다.

하고 싶은 일을 달성하는 더 좋은 방법이 있습니다.

  • 쿼리 스트링을 사용할 수 있습니다. 당신이 지나가는 것은 목록 ID입니다. 링크 끝에 목록 ID를 추가하고 page_load에서 찾으십시오. 찾은 경우 적절한 목록을로드하십시오. 목록 ID가 통과되지 않은 경우를 처리하고 싶을 것입니다. 쿼리 스트링은 악하지 않습니다. 페이지 무게를 줄이는 데 큰 도움이 될 수 있습니다. 괜찮은 것과 함께 사용될 때 URL Rewriter, 당신은 통과되는 것을 많이 통제 할 수 있습니다 (그리고 결정적으로는 무엇이 그렇지 않은지)
  • ASP .NET 컨트롤 (예 : 버튼 또는 LinkButton)을 사용하여 목록 표시를 트리거하는 경우 CommandArgument 속성을 설정하고 이벤트 코드에서 선택할 수 있습니다. 그런 다음이를 매개 변수로 전달하여 목록 렌더링을 처리하는 메소드 나 컨트롤로 전달할 수 있습니다.

다른 팁

ViewState는 페이지 간의 인수를 전달하지 않고 Post Backs 사이의 단일 페이지에 정보를 저장하는 데 사용됩니다.

다음을 사용하여 페이지간에 인수를 전달할 수 있습니다.

  1. 세션
  2. 쿼리 문자열
  3. 쿠키
  4. 사용자 정의 데이터베이스
  5. 크로스 페이지 포스트 백

이러한 방법 중 어느 것도 요청중인 페이지의 뷰 스테이트에 데이터를 자동으로 추가하지 않습니다. 그 중 #2만이 직선 HTML 링크 (get)와 함께 작동한다고 생각합니다. 나머지는 일반적으로 Postback (Post)을 포함합니다.

당신은 항상 일종의 ViewState Setter가 필요합니다 (ViewState [ "id"] = source.id) 요청 된 페이지에서.

방법 : ASP.NET 웹 페이지간에 값을 전달합니다

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