2009-02-26 6 views
1

select (드롭 다운 메뉴)를 기반으로하는 맞춤형 ASP 컨트롤이 있습니다. html에 "disabled"라는 단어를 추가하여 컨트롤을 비활성화하면 폼 데이터를 처리 할 때 널 포인터 오류가 발생하기 시작합니다..NET 컨트롤을 사용하지 않도록 설정하면 게시되지 않습니다.

그림에서 브라우저는 사용하지 않는 양식 항목을 다시 게시하지 않거나 ASP.NET이 양식 데이터를 처리 할 때이를 무시합니다. 나는 그것이 어느 것인지 모른다. 나는 데이터를 잃어버린 곳을 이해하려고 노력하고있다.

도움 주셔서 감사합니다.

추신. 수동으로 HTML을 편집하는 것보다 컨트롤을 생성하고 비활성화하는 더 좋은 방법이 있다는 것을 알고 있습니다. 그러나 여기에서 내가 다르게 할 수없는 컨텍스트가 있습니다.

답변

5

예 설정 컨트롤의 Enable = false는 게시 된 데이터 수집에 컨트롤의 값을 추가하지 못하게합니다.

대신 readonly attribute을 사용할 수 있습니다. MSDN 여기

는 말한다 :

사실 로 설정된 읽기 전용 속성을 TextBox 컨트롤 의 텍스트 값이 다시 게시 이 발생하는 서버로 전송하지만, 서버가 더 처리를 수행하지 않습니다 읽기 전용 텍스트 상자입니다. 이렇게하면 악의적 인 사용자가 의 텍스트 값을 읽기 전용으로 변경하는 것을 방지 할 수 있습니다. Text 속성의 값은 이 서버 측 코드로 수정되지 않는 한 다시 게시 간 상태로 유지됩니다.

주제에 관련된 버그 보고서는 여기 Microsoft's reply입니다.

하지만이 작동 할 수처럼 고전적인 방법으로 사용하는 경우 :

txt2.Attributes.Add("readonly", "readonly"); 
+0

선택 상자에서는 작동하지 않습니다. 드롭 다운은 회색으로 표시되어 있지만 여전히 값을 변경할 수 있습니다. 참조 : http://www.htmlcodetutorial.com/forms/_SELECT_READONLY.html –

+0

읽기 전용 마술은 나를 위해 작동하지 않지만 내 질문에 답했습니다. null 값을 처리 할 것입니다. 감사합니다. –

+0

왜 작동하지 않는지 설명하는 리소스를 찾고 텍스트 상자에 대한 테스트되고 작동하는 코드를 추가했지만 드롭 다운에 대해서는 확실하지 않습니다. – Canavar

0

그것은 다시 게시에서 컨트롤을 사용하지 않도록하지만,이 웹 패러다임은 클라이언트/서버 기술입니다 기억합니다. 어떤 사람이 클라이언트 데이터 (HTML 및/또는 자바 스크립트)를 수정하고 보낸 사람이 무엇이든 상관없이 다시 게시 할 수 있습니다.

따라서 금전 조작과 같은 보안에 민감한 작업에 의존하지 마십시오.

민감한 작업에 대해서는 항상 서버 측에서 검사를 수행하십시오.

+0

예, 데이터 영역에서도 작업을 시행합니다. 알림 주셔서 감사. –

관련 문제