2010-01-17 5 views
2

나는이 질문에 답을 얻었지만 찾을 수 없다고 생각합니다 ... 어쨌든이 용어는 너무 많은 질문에 사용 되었기 때문입니다.포스트 백 (asp.net)에 동적 컨트롤을 구축

초기화 이벤트 게시 등의 동적 컨트롤을 구축에 대한 정보를 저장하는 가장 좋은 방법을 얼마나

...

예를 들어, 고전 "설문 조사"를 가지고 시나리오 ... question.aspx? ID는 1

  1. 는 쿼리 문자열에서 지금까지의
  2. 로드 질문을 ID를 얻을 각 질문을 추가 동적, 동적 을 컨트롤을 만들거나 = 어떻게 지금까지 많은 질문 등
  3. 페이지가 다시 게시에 대한 사용자 제어 (사용자 프레스 같아요 제출!) 초기화 이벤트
  4. ... 은 어디 이미이에 ID를 저장해야질문 컨트롤을 다시 만드시겠습니까? 그것은 페이지에 관련이 나는 처음에 viewstate가의 값을 저장

    • 하지만 viewstate가 값에 사용할 수 없습니다 입니다 :

일이 지금까지의/생각 해봤 페이지 초기화 (또는 무엇입니까 ??)

  • 양식 컬렉션에서 값을 액세스하고 숨겨진 변수
  • 세션 - 세션을 사용하고 싶지 않습니다, 문제가있는 것 같습니다. 사용자가 두 개의 설문지를 보는 경우에는 어떻게됩니까?
  • 다시 쿼리 문자열? 그러나 그것은 변경하기가 너무 쉬우 며 다이나믹 컨트롤은 이해가 가지 않습니다. ...
  • 컨트롤에 있습니까? 예 : 설문 ID를 모두 무시하고 단순히 질문 ID를 어쩌면 어쩌지 ?? 컨트롤 ID는 controlQ #와 같은 형식으로 가정합니다. controlQ1, controlQ2. 즉, 각 질문 ID는 고유해야합니다.
  • 도움/안내 등 많은 의견을 말합니다.

    답변

    1

    쿼리 문자열은 포스트 백 중에 계속 사용할 수 있으므로 거기에서 ID를 가져올 수 있습니다.

    쿼리 문자열 매개 변수를 조작하는 사용자에 대한 우려된다면, 어쩌면 당신은 당신이 다시 게시하는 동안 쿼리 문자열의 정확성을 검증 할 수 있도록 몇 가지 추가 매개 변수를 추가해야합니다. 간단한 예를 들어, 당신은 ID 매개 변수 및 현재 세션의 ID의 MD5 해시를 추가하고, 다시/다시 게시하는 동안 그 체크섬을 비교할 수 있습니다.

    0

    페이지 OnLoad에서 usercontrols를 만들거나로드하려고합니다. 사용자 정의 컨트롤 내에서로드하려는 경우 다른 사용자 정의 컨트롤은 OnInit 이벤트를 사용합니다.

    포스트 백 동안 usercontrols를 다시 인스턴스화하는 데 필요한 정보 지속성을 위해 viewstate를 사용하십시오. 다시 게시 데이터를 제어 트리에 매핑하려면 동일한 제어 트리가 있는지 확인해야합니다. 그 매핑을 한 후에는 컨트롤 트리를 변경할 수 있습니다 (예 : 다른 컨트롤로드).

    contols-id : 예, 고유 한 ID를 부여해야합니다. 그렇지 않으면 작동하지 않습니다. 질문을 데이터베이스에 저장하는 경우 데이터베이스에 기본 키를 사용하는 데 문제가 없어야합니다. question-1, question-2 (컨트롤)

    +0

    내가 그들을 onLoad 이벤트에 작성하는 경우, 내가 수동으로 그때 초기화 이벤트를 만든 경우가 자동으로 복원 될 포스트 백 값을 복원해야합니다 권리를 소리입니까? – davidsleeps

    +0

    우리는 여전히 usercontrols에 대해 이야기하고 있습니까? 수동으로 다시 게시 값을 복원 할 필요가 없습니다. 이것은 자동으로 수행됩니다. 하지만 todo는 프레임 워크가 먼저 컨트롤을 알아야합니다. aspx에서 컨트롤을 선언하면 프레임 워크가이 작업을 수행합니다. 당신은 라이프 사이클 (일명 동적) 동안 컨트롤을 추가 할 경우하지만 당신은 다시 게시 또한이 작업을 수행 할 수 있습니다. – karlis

    +0

    는 당신이 첫 번째 요청 (GET) 당신의 자리에 주소 제어에 추가 말할 수 있습니다. 사용자가 일부 필드 (거리, 도시 ..)를 채 웁니다. 포스트 백에서는 프레임 워크가 포스트 데이터를 컨트롤에 할당합니다. 현재 첫 번째 단계에서 설정된 ID를 가진 컨트롤이 없으면 예외가 발생합니다. 포스트 백 데이터를 처리하기 전에 컨트롤을 추가하면 프레임 워크에서 컨트롤을 찾고 데이터를 추가 할 수 있습니다. 이 후 페이지를 정상적인 방법으로 처리 할 수 ​​있습니다 (데이터 저장 등). 이 작업을 마친 후에는 컨트롤을 변경할 수 있으므로 주소 컨트롤을 제거하고 전화 콘센트를 추가하십시오 – karlis