방법: 사용자 지정 함수로 ASP.NET 서버 컨트롤 유효성 검사
업데이트: 2007년 11월
기존 ASP.NET 유효성 검사 컨트롤이 작업에 맞지 않으면 사용자 지정 서버측 유효성 검사 함수를 정의하고 CustomValidator 컨트롤을 통해 호출할 수 있습니다. 또한 페이지를 전송하기 전에 사용자 입력을 검사하기 위해 서버측 메서드의 논리를 복제하는 ECMAScript(JavaScript)로 함수를 작성하여 클라이언트측 유효성 검사를 추가할 수도 있습니다.
클라이언트측 검사를 사용하는 경우에도 서버측 유효성 검사를 수행해야 합니다. 서버측 유효성 검사를 사용하면 클라이언트 스크립트를 비활성화하거나 변경하여 사용자가 유효성 검사를 생략하지 않게 할 수 있습니다.
보안 정보: |
---|
기본적으로 ASP.NET 페이지에서는 악의적인 의도를 가진 사용자가 응용 프로그램에 스크립트 또는 HTML 요소를 전송하는지 여부를 자동으로 확인합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오. |
사용자 지정 함수를 사용하여 서버에서 유효성을 검사하려면
CustomValidator 컨트롤을 페이지에 추가하고 다음 속성을 설정합니다.
속성
설명
유효성을 검사할 컨트롤의 ID입니다.
유효성 검사에 실패한 경우 나타날 오류의 텍스트와 위치를 지정하는 속성입니다. 자세한 내용은 방법: ASP.NET 서버 컨트롤의 유효성 검사 오류 메시지 표시 제어를 참조하십시오.
컨트롤의 ServerValidate 이벤트에 대해 서버 기반의 이벤트 처리기를 만듭니다. 이 이벤트는 유효성 검사를 수행하기 위해 호출됩니다. 메서드에는 다음과 같은 서명이 있어야 합니다.
Protected Sub CustomValidator1_ServerValidate(ByVal _ source As System.Object, ByVal args As _ System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate End Sub
protected void ValidationFunctionName(object source, ServerValidateEventArgs args) { }
source 매개 변수는 이 이벤트를 발생시킨 사용자 지정 유효성 검사 컨트롤에 대한 참조입니다. 속성 args.Value 에는 유효성을 검사할 사용자 입력이 포함됩니다. 값이 올바르면 args.IsValid를 true로 설정하고, 그렇지 않으면 false로 설정합니다.
다음 코드 예제에서는 사용자 지정 유효성 검사를 만드는 방법을 보여 줍니다. 이벤트 처리기는 사용자가 입력한 내용이 8자 이상인지 확인합니다.
Protected Sub TextValidate(ByVal source As System.Object, _ ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate args.IsValid = (args.Value.Length >= 8) End Sub
protected void TextValidate(object source, ServerValidateEventArgs args) { args.IsValid = (args.Value.Length >= 8); }
다음과 같은 코드를 사용하여 이벤트 처리기를 메서드에 바인딩합니다.
<asp:textbox id="TextBox1" ></asp:textbox> <asp:CustomValidator id="CustomValidator1" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
<asp:textbox id="TextBox1" ></asp:textbox> <asp:CustomValidator id="CustomValidator1" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
ASP.NET 웹 페이지 코드에 유효성 검사 테스트를 추가합니다. 자세한 내용은 방법: 프로그래밍 방식으로 ASP.NET 서버 컨트롤 유효성 검사를 참조하십시오.
클라이언트에서 사용자 지정 유효성 검사 논리를 만들려면
ECMAScript(JavaScript, JScript)에서 유효성 검사 함수를 만듭니다.
다음 코드 예제에서는 사용자 지정 클라이언트측 유효성 검사를 보여 줍니다. 페이지의 일부를 가져온 부분에서는 CustomValidator 컨트롤에서 참조하는 TextBox 컨트롤을 보여 줍니다. 유효성 검사 컨트롤은 validateLength 라는 클라이언트 스크립트 함수를 호출하여 사용자가 TextBox 컨트롤에 8자 이상을 입력했는지 확인합니다.
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<asp:Textbox id="text1" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
<asp:Textbox id="text1" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
ASP.NET 웹 페이지 코드에 유효성 검사 테스트를 추가합니다. 자세한 내용은 방법: 프로그래밍 방식으로 ASP.NET 서버 컨트롤 유효성 검사를 참조하십시오.