2010-05-21 3 views
16

웹 응용 프로그램에서 사용되는 많은 숨겨진 필드를 항상 보았습니다. 나는 숨겨진 필드를 많이 사용하도록 작성된 코드로 작업했으며, 보이는 필드의 데이터 값은 앞뒤로 보내졌다. 숨겨진 필드가 왜 사용되는지 이해하지 못합니다. 숨겨진 필드를 사용하지 않고도 같은 문제를 해결할 수있는 방법을 거의 항상 생각할 수 있습니다. 숨겨진 필드는 디자인에서 어떻게 도움이됩니까?숨겨진 필드가 사용되는 이유는 무엇입니까?

숨겨진 필드가 제공하는 이점을 정확히 알 수 있습니까? 숨겨진 필드가 사용되는 이유는 무엇입니까?

+0

실제로 숨겨진 필드가 필요없는 예제를 찾을 수 없습니다. 하나 줄 수 있어요? :) – ZeissS

+4

왜이 태그는'C#'입니까? ASP.NET에서 숨겨진 필드의 사용에 대해 구체적으로 묻는 것을 의미합니까? –

+0

예 ASP.NET에서 숨겨진 필드를 사용하는 것에 대해 물어 보았습니다. 그에 따라 질문에 태그를 붙였습니다. 덕분에 @ Jørn Schou-Rode – pavanred

답변

16

숨겨진 필드는 가장 쉬운 방법이므로, 그 이유는 상당히 많이 사용되었습니다.

  • (트랜잭션 단일 숨겨진 필드와 ID)와 (SessionID를 쿠키) 세션의 서버 측에서

    • 데이터를 저장하는 트랜잭션 서버 측에서
    • 데이터를 저장하여 :

      대안

      : 대신 적용 숨겨진 필드 쿼리 매개 변수

    홈페이지 우려의 URL 경로 0

    • (서버 측 저장소와 달리) 숨김 필드의 값을 페이지간에 무단으로 변경하지 못하도록 신뢰할 수 없습니다.
    • 큰 데이터는 매번 게시해야하며 문제가 될 수 있습니다.

      • 페이지와 여러 브라우저 창
      • 필요없이 서버 측 정리 사이에 유출없이 지속적인 세션 (에 대한 :

      주요 장점 (예 : 업로드 된 이미지에 대한) 일부 데이터 불가능 만료 된 데이터)

    • 클라이언트 측에 접근 스크립트
  • +1

    +1 장점과 함정에 대한 훌륭한 설명이 있습니다. – IAbstract

    +2

    그런 값을 저장하기위한 좋은 대체 ViewState가 누락되었습니다. –

    +1

    @Tim : ASP.NET의 ViewState *는 숨겨진 입력 필드를 사용하여 구현됩니다. –

    4

    가장 일반적인 용도 나는 어떤 이유로 서버에 다시 보내지는 것보다 다른 이유 때문에 실제로 페이지에있을 필요가없는 ID 및 기타 용도로 사용합니다.

    -edit는, 당신은 당신이 업데이트 일부 개체를 원하는 한

    는 예를 들어 말을 더 세부 - 포함 시켰한다 - UI를 또는 알 수 없습니다 수있는 값의 수집 및 그 시점에서 서버를 다시 전송 "이봐, 이건 고객 객체 야."그래서 서버에 대한 요청을 해고하고 "이봐, 나에게 ID 7을 줘."라고 말하면 시스템이 알고있는 것처럼 고객 객체를 갖게된다. 업데이트가 적용되고 유효성이 검사되고 UI가 완성 된 결과를 얻습니다.

    좋은 변명/인자는 linq를 사용하고 있습니다. 먼저 DB에서 가져 오지 않고 linq의 객체를 업데이트하십시오. 완전한 객체를 얻을 때까지 추적 할 수있는 무언가라는 사실은 전혀 없습니다.

    1

    일반적으로 상호 작용이 진행됨에 따라 상태를 저장하는 데 사용됩니다. 대신 쿠키를 사용할 수 있지만 일부 사람들은 쿠키를 사용하지 않도록 설정합니다. 단일 숨겨진 필드를 사용하여 서버 측 상태를 가리킬 수도 있지만 세션 고정 문제가 있습니다.

    3

    유용한 시나리오가 많이 있습니다.

    하나는 사용자가 입력해서는 안되는 페이지에 데이터를 "저장"하는 것입니다. 예를 들어, 페이지를 생성 할 때 사용자 ID를 저장하면이 값은 자동으로 양식과 함께 서버에 제출됩니다.

    다른 하나의 시나리오는 보안입니다. 숨겨진 토큰을 페이지에 추가하고 서버에 해당 토큰을 확인하십시오. 이것은 양식이 브라우저를 통해 제출되었는지 아니면 방금 사이트에있는 URL에 게시 된 일부 봇에 의해 제출되었는지 식별하는 데 도움이됩니다.

    12

    오브젝트를 편집한다고 가정하십시오. ID를 숨겨진 필드에 넣는 것이 좋습니다. 물론 값은이 아니어야합니다 (즉 사용자에게 insert/update에 대한 적절한 권한이 있는지 확인해야합니다).

    여전히 매우 편리한 해결책입니다. 표시 필드 (예 : 읽기 전용 텍스트 상자)에 ID를 표시하는 것은 가능하지만 사용자에게 짜증나게합니다.

    세션/쿠키에 ID를 저장하는 것은 금지되어 있습니다. 동시에 여러 개의 열린 편집 창을 허용하지 않으며 수명 제한을 부과하기 때문입니다 (세션 시간 초과로 인해 편집 작업이 깨지거나 매우 짜증나게됩니다).

    URL을 사용할 수도 있지만 디자인 규칙을 위반합니다. 즉, 데이터 수정시 POST를 사용합니다. 또한 사용자에게 표시되기 때문에 더러운 URL이 만들어집니다.

    3

    그것은() 쿼리 문자열에서와 같이 URL에서 일을 계속 그래서 청소하는 것이 유지합니다. 또한 반드시 Session 내에있을 필요는 없을 수도있는 세션을 유지합니다.

    그 외에도 다른 많은 이점을 생각할 수 없습니다.

    3

    heres 이유 중 하나는 클라이언트 코드 (자바 스크립트)와 서버 측간에 데이터를 전달하는 편리한 방법입니다.

    1

    양식에 숨김 필드를 사용하는 경우 새 컨트롤을 포함하여 양식의 부담을 늘리고 있습니다.

    숨겨진 필드를 사용할 필요가없는 경우 보안 지점을 기준으로 적합하지 않으므로 가져 가면 안됩니다. 숨겨진 필드를 사용하면 좋은 프로그래밍이되지 않습니다. 이는 응용 프로그램의 성능에도 영향을주기 때문입니다.

    관련 문제