2009-07-16 1 views
0

하나의 웹 세션에서 다음 웹 세션까지 값 배열을 보존하는 가장 좋은 방법을 찾고 있습니다. 확인란 목록을 채우고 마지막 확인란을 선택하여 다음 세션으로 유지하려고합니다. (이것은 항상 체크 박스의 동일한 하위 집합을 선택하기 때문에 사용자가 시간을 절약 할 수 있습니다.)asp.net 페이지에서 선택한 확인란을 저장하고 호출하는 모범 사례

확인란 목록을 반복하여 선택한 값을 arraylist에 넣습니다.

이 데이터 세트를 유지하기에 좋은 곳은 어디입니까? 개체를 데이터베이스에 저장하거나 서버의 XML 파일에 저장하는 방법을 살펴 보았습니다. 또한 데이터를 web.config로 푸시하는 것을 고려했지만 응용 프로그램을 다시 시작하지 않으려합니다.

의견이나 제안이 있으십니까?

TIA

J

+2

web.config는 이러한 사용자 데이터를 저장할 장소가 아닙니다. 웹 응용 프로그램의 구성 세부 정보를 저장하기위한 것입니다. – SolutionYogi

답변

0

응용 프로그램에 이미 데이터베이스를 사용하고 있다면 데이터베이스의 확인란 상태를 저장해야합니다. 이유는 데이터베이스가 이미 응용 프로그램에 액세스하는 사람의 여러 인스턴스를 처리 할 준비가되어 있고 동시성 문제가 더 쉽게 처리되기 때문입니다. 확장 성은 물론입니다.

각 확인란에 대한 모든 정보를 캡처 할 수있는 충분한 열이있는 테이블을 만듭니다. 예를 들어 : 페이지의로드에

CREATE TABLE [CheckBoxStatus] (
[CheckBoxID] nvarchar(50), 
[bool] bit NULL DEFAULT 0, 
[SessionID] nvarchar(50)); 

, 당신은이 테이블 안에 자신의 ID 년대를 쿼리, 페이지에있는 체크 박스의 모든 통해 interate 수 있습니다. 기록이 없으면 아직 아무도 확인란을 선택하지 않았 음을 의미합니다. 존재하는 경우 부울 점검 상태를로드하고 페이지의 선택란을 갱신하십시오.

같은 경우 저장하면 부울 값이 해당 checkboxID 및 SessionID와 함께 삽입됩니다.

checkboxID가 어떻게 든 동적으로 생성되는 경우에도 작동해야합니다. 체크 박스 ID를 생성하는 것은 항상 특정 종류의 체크 박스에 대해 동일한 ID를 생성한다는 점을주의하십시오.

그래서 "Red Car"와 같은 경우 "Red Car"가 동일한 컨텍스트에 표시되는 모든 곳에서 동일한 ID를 생성해야합니다.

0

나는 그것이 내 데이터베이스에서 부울 컬럼에 체크 박스를 지속하는 것이었다했던 방법입니다. 확인란은 부울 열에 바인딩되므로 페이지를 다시 열면 확인란에 저장된 상태가 포함됩니다.

+0

목록의 확인란 수가 가변적 인 것을 잊어 버렸습니다. –

0

쿠키에 저장하면 어떨까요? 논리 값으로 구성되어 객체를 만들고 쿠키로 직렬화 :

class Checks() { 
    public value1(get; set;) 
    public value2(get; set;) 
    public value3(get; set;) 
    ... 
    public valueN(get; set;) 
} 
+0

-1. 그것은 그것이 일종의 목록이라는 것이 분명합니다. 왜 목록에 저장 또는 이와 비슷한. – SolutionYogi

0

나는이 문제에 혼란 조금, 당신은 WebSessions 언급조차 Webconfig에서 설정을 지속 할 생각입니다,하지만 당신은 얼마나 많은 세션을 유지할 것이며, 당신은 어떻게 기본적인 질문 내가

  • 이 세션 수준 또는 응용 프로그램 수준 @ 설정 (체크 박스 선택) 사람인가요,의 Web.config 어떤 XML 파일을 고려해 일부를두고, 사용하지 않는 세션을 정리 것인가?
  • 지속 시간은 어떻게됩니까?
  • 다른 데이터 처리를 위해 서버 사이트에 필요한 데이터입니까, 아니면 클라이언트 측에 있다면 괜찮습니다.
  • 사용자에게 고유 한 식별 사용자가 있습니까? 상태를 표현하는 사용자 정의 개체가

    클라이언트 측 지속성 사용 쿠키의 경우와 끊어 측

요구 사항이 빠른 해결책을 추구하고 성장하지 않는다 경우, 쿠키 읽기

  • 서버 쪽 영속성의 경우 XML 파일과 스키마를 사용하여 사용자의 고유 ID를 키로 식별하고 사용자 지정 클래스에서 설정을로드하는 데 도움이됩니다.
  • 요구 사항이 장기적인 해결책을 찾고 있으며 앞으로 커지면 ASP.NET 프로필을 사용하고 적절한 경우 사용 가능한 프로필 공급자 (SQL SERVER)를 사용하거나 고유 한 프로필 공급자 구현.

    +0

    원래 질문에 대해 더 명확히하지 않아서 죄송합니다. 설정이 적용 범위입니다. 즉, 임의의 사용자는 임의의 다른 사용자에 의해 저장된 임의의 그룹의 설정을 호출 할 수있다. (이것은 내부 유틸리티 웹 응용 프로그램입니다). 지속성이 영구적이어야합니다. 여러 개의 설정 모음이 있습니다. 귀하의 답변 # 2는 제가 찾고있는 것이라고 생각합니다. 감사합니다. –

    0

    실제로 당신이 말하는 것에는 두 가지 방법 밖에 없습니다.

    1. 이 정보를 저장하는 응용 프로그램 수준에서 변수를 지정하십시오. 단점은 웹 앱이 재활용 될 때마다 삭제된다는 것입니다.

    2. 데이터베이스 테이블에 저장하십시오. 단점은 데이터를 얻기 위해 데이터베이스 호출이 필요하다는 것입니다.

    사이트가 web.config에 쓰기를 허용하는 것은 잠재적 인 보안 위험 때문에 좋지 않습니다. 사이트에서 디스크에 아무 것도 쓸 수 없게하는 경우에도 마찬가지입니다. 때때로 우리는 그것을 피할 수는 없지만 (파일 업로드), 적어도 실행 불가능한 영역에는 포함시킬 수 있습니다.

    개인적으로 사이트 전체 반영구적 인 항목의 경우 두 가지를 조합하여 사용합니다. 데이터베이스 테이블에 저장하지만 응용 프로그램 수준 변수에 db 호출의 결과를 캐시합니다.

    내 백엔드가 SQL 2005 또는 2008이었던 경우, 나는 한 단계 더 나아가 SqlCacheDependency 개체를 사용하여 해당 db 테이블에서 업데이트가 발생하자마자 캐시가 무효화되도록 할 수도 있습니다.

    관련 문제