2011-06-10 3 views
6

Page_Load() 메서드에서 데이터베이스를 쿼리하고 데이터를 사용하여 개체를 채우는 것과 같은 몇 가지 작업을 수행하는 C# 코드 숨김이있는 asp.net 페이지가 있습니다. . 그런 다음이 데이터를 페이지에 표시합니다. 이 모든 것이 잘 작동합니다. 두 개의 포스트 백을 설정하여 목록 상자의 값을 클릭하면 패널 컨트롤이 나머지 해당 객체의 데이터로 채워지도록했습니다. 포스트 백이 올바른 방법이라고 생각했는데, 이로 인해 전체 클래스가 다시 호출되어 개체를 다시 초기화하고 유지하려는 데이터를 파괴합니다.포스트 백에서 C# 객체 유지

일부 형식의 부분 포스트 백이이 문제를 해결할 수 있습니까, 아니면 내가 수행하려는 것을 구현하는 더 좋은 방법이 있습니까?

나는 ... 그 데이터베이스 쿼리를 받아, 나는 다시 쿼리 무언가를 클릭 할 때마다 피하기 위해 원하는대로, 객체에게 다시 게시가 호출 될 때마다 다시 채우려면

내가 원하지 않는 Javascript 객체를 지속하는 것에 관한 많은 질문을 발견했지만 실제로이 문제를 해결하는 것으로 보이는 것은 없습니다. 사용하고 있습니다. 닷넷 4.0

+0

데이터 세션/캐시/쿠키/등을 유지하기위한 선택의 폭이 넓습니다. 또 다른 선택은 [UpdatePanel] (http://www.asp.net/ajax/tutorials/understanding) 부분 게시물 일 수 있습니다. -asp-net-ajax-updatepanel-triggers). – Zachary

답변

3

현재 사용자의 Session에 개체를 넣으십시오.

+0

그래, 아직 전체 포스트 백을하고 있는데 어떻게해야할까요? 또는 페이지의 특정 부분 만 변경하기 위해 일부 종류의 아약스 또는 부분 포스트 백을 사용해야합니까? – uscere90

+0

이제 완전히 다른 주제로 다가 가고 있습니다. 포스트 백간에 사용자를위한 변수와 객체를 유지하는 것은 'Session'에 의해 처리되는 것이 가장 좋습니다. InProc은 SQL Server 데이터베이스를 사용합니다. 전체 포스트 백을 수행하거나 AJAX를 사용할지 여부는 애플리케이션 배치 방법에 따라 다릅니다. 예를 들어 그리드 나리스트를 새로 고치려면 아마 AJAX를 새로 고치면됩니다. 단지 페이지 레이아웃 요소가 아닌 데이터를 가져와야하기 때문입니다. 도움이 되길 바랍니다. – Yuck

+0

개체를 세션에 넣는 것을 권장하지 않습니다. – Chris

2

(!IsPostback) { }에서 모든 초기화 물건을 넣고 부분 포스트 백을 사용합니다. 그렇게하면 초기화 코드가 포스트 백 중에 다시 호출되지 않습니다.

+0

Page_Load 섹션에 있습니다. 실행중인 문제는 가변 범위입니다. 이러한 객체를 사용하여 작업하는 데 사용하는 여러 가지 메소드가 있으므로 클래스 범위 변수로 선언됩니다. 전체 포스트 백을하면 다시 선언되고 오래된 것들은 파기됩니다. – uscere90

+2

Session 대신 ViewState를 사용하여 변수를 보유 할 수 있습니다. 그렇게하면 그들은 그 페이지 안에 만 살 수 있습니다. – Marcus

관련 문제