2019. 3. 27. 10:03

ASP.NET 유효성 검사.

요효성 검사


RequiredFieldValidator    지정된 입력 컨트롤에 사용자가 반드시 값을 입력하도록 유도하는 컨트롤

CompareValidator          지정된 입력 컨트롤에 입력된 값을 상수, 다른 컨트롤의 속성값 또는 DataBase 값과 비교.

RangeValidator              지정된 입력 컨트롤에 입력된 내용이 지정한 하안값과 상한값 사이에 있는지 검증.

RegularExpressionValidator  지정된 입력 컨트롤에 입력된 내용이 정규식에서 정의한 패턴과 일치하는지 확인.

Custom Validator           지정된 입력 컨트롤에 입력된 내용이 직접 작성한 유효성 검사 논리와 일치하는지 확인.

ValidatioSummary          모든 유효성 검사 오류 메시지를 요약,표시.




우의 요효성 검사 툴에서 


RegularExpressionValidator 과 ValidationSummary 를 사용해서 구축하였습니다.



# 핵심 : form 테그 진행시 submit 를 클릭했을시 값을 넘기는 onClick 의 값을 2개 넣어주면, 하나만 액션이 일어나고, 나머지 하나는 액션이 일어 나지 않았습니다. 



<asp:Button ID="Submit" runat="server" Text="등록하기" OnClientClick="return submitCheck();" OnClick="Submit_Click" class="submit" />



그래서 Form 테그 위치에 아래와 같이 넣어서 해결했습니다. 

 <form id="form1" runat="server" onsubmit="return submitCheck();">


# 해석 : <asp:Button ID ..... 위치의 onClick="Submit_Click"  위치에 실행은 브라우져에서 실행하고, 

           <form id = "form1" runat.......  위치의 것은 onsubmit 로 변경하여 서버에 값을 넘길때 싱핼하라.



#### 전체 소스 #######################################################################



  <script type="text/javascript">

          $(document).ready(function () {

          });


          function submitCheck() {

              $("#<% =ValidationKey.ClientID %>").val("<%=ValidationKeyValue %>");              

              if ($("#<% =companyName.ClientID %>").val() == "") {

                  alert("회사명 값을 입력해 주세요");

                  return false;

              }


              if ($("#<% =Name.ClientID %>").val() == "") {

                  alert("이름 값을 입력해 주세요");

                  return false;

              }


              if ($("#<% =Email.ClientID %>").val() == "") {

                  alert("이메일 값을 입력해 주세요");

                  return false;

              }


              if ($("#<% =Url.ClientID %>").val() == "") {

                  alert("도메인을 입력해 주세요");

                  return false;

              }


              if ($("#<% =Phone.ClientID %>").val() == "") {

                  alert("전화번호 값을 입력해 주세요");

                  return false;

              }


              if (tinyMCE.get("<% =Body.ClientID %>").getContent() == "") {

                  alert("문의하실 본문 내용을 입력해 주세요");

                  return false;

              }


              if (!$("#privacyCheck").is(":checked")) {

                  alert("개인정보수집에 동의해 주세요");

                  return false;

              }


              if (!confirm("입력한 정보가 모두 맞습니까?")) {

                  return false;

              }

          }


           function AjaxFailed(result) {

               alert("예외\n" + result.status + ' : ' + result.statusText + "\n" + result.responseText);

           }

        </script>




 <form id="form1" runat="server" onsubmit="return submitCheck();">                                                            

<--   onsubmit 은 Form 테그시 OnClick 으로 (하단 빨간색) 값을 넘길때 하나의 값만 넘겨야 되

는데 그 값을 2개를 넘길경우 onsubmit 를 사용해서 값을 기재해줍니다. "return submitCheck();"-->



      <asp:HiddenField ID="UserHostAddress" runat="server" Value="" />

      <asp:HiddenField ID="ValidationKey" runat="server" />

    <table summary="문의사항 입력 사항" class="certificate">

    <caption>"문의사항 입력 사항</caption>

      <col width="20%" />

      <col width="*" />

      <tbody>

      <tr>

        <th scope="row"><label for="ContentPlaceHolder1_companyName"><span class="req">*</span> 고객사명</label></th>

          <td><asp:TextBox ID="companyName" runat="server" Width="200px"></asp:TextBox>

              <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="companyName" ErrorMessage="한글영문숫자만 입력하세요" ValidationExpression="^[ㄱ-ㅎ|가-힣|a-z|A-Z|0-9|\*]+$"></asp:RegularExpressionValidator>

            </td>

        </tr>

        <tr>

        <th scope="row" class="auto-style1"><label for="ContentPlaceHolder1_Name"><span class="req">*</span> 담당자명</label></th>

          <td class="auto-style1"><asp:TextBox ID="Name" runat="server" Width="100px"></asp:TextBox>

              <asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server" ControlToValidate="Name" ErrorMessage="한글 영문 숫자만 입력하세요" ValidationExpression="^[ㄱ-ㅎ|가-힣|a-z|A-Z|0-9|\*]+$"></asp:RegularExpressionValidator>

            </td>

        </tr>

        <tr>

        <th scope="row"><label for="ContentPlaceHolder1_Email"><span class="req">*</span> 이메일</label></th>

          <td><asp:TextBox ID="Email" runat="server" Width="200px"></asp:TextBox>

              <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="Email" ErrorMessage="E-Mail 값을 정확히 입력하세요" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>

            </td>

        </tr>

        <tr>

        <th scope="row"><label for="ContentPlaceHolder1_Url"><span class="req">*</span> 도메인</label></th>

          <td><asp:TextBox ID="Url" runat="server" Width="300px"></asp:TextBox>

              <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="Url" ErrorMessage="주소를 정확히 입력하세요" ValidationExpression="([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?"></asp:RegularExpressionValidator>

            </td>

        </tr>

        <tr>

        <th scope="row" class="auto-style1"><label for="ContentPlaceHolder1_Phone"><span class="req">*</span> 전화번호</label></th>

          <td class="auto-style1"><asp:TextBox ID="Phone" runat="server"></asp:TextBox>

              <asp:RegularExpressionValidator ID="RegularExpressionValidator5" runat="server" ControlToValidate="Phone" ErrorMessage="숫자만 입력하세요" ValidationExpression="[0-9]{6,20}"></asp:RegularExpressionValidator>

            </td>

        </tr>

        <tr>

        <th scope="row"><label for="ContentPlaceHolder1_Mobile">이동전화</label></th>

          <td><asp:TextBox ID="Mobile" runat="server"></asp:TextBox><asp:CheckBox ID="mNotify" runat="server" Text="처리 SMS 수신" Checked="true" />

              <asp:RegularExpressionValidator ID="RegularExpressionValidator6" runat="server" ControlToValidate="Mobile" ErrorMessage="숫자만 입력하세요" ValidationExpression="[0-9]{6,20}"></asp:RegularExpressionValidator>

            </td>

        </tr>   

        <asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="다음 사항들을 확인해 주세요." ShowMessageBox="True" ShowSummary="False" />


      <asp:Button ID="Submit" runat="server" Text="등록하기"  OnClick="Submit_Click" class="submit" />

    </div>

  </form>

</asp:Content>

<asp:Content ID="Content2" runat="server" contentplaceholderid="head">

    <style type="text/css">

        .auto-style1 {

            height: 36px;

        }

    </style>

</asp:Content>