2009-06-03 7 views
3

클라이언트 측 유효성 검사를 실행하려고합니다. 내가 함께 매우 간단한 테스트를 넣었습니다 - 파일 이름은 aTET3.aspx은 다음과 같습니다ASP.Net 페이지의 클라이언트 측 유효성 검사를 실행하려면 어떻게합니까?

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeFile="aTET3.aspx.cs" Inherits="aTET3" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>TEST</title> 

    <script type="text/javascript"> 
    //<![CDATA[ 
    function TEST() 
    { 
     alert("INSIDE TEST"); 
     alert("ValidatorCommonOnSubmit()=" + ValidatorCommonOnSubmit()); 
     alert("Page_ClientValidate()=" + Page_ClientValidate()); 
    } 
    //]]> 
    </script> 
</head> 

<body link="#1A548E" vlink="#1A548E" alink="#1A548E" onunload="TEST()"> 

<form name="appForm" method="post" action="aTET3.aspx" id="appForm" runat="server"> 
<asp:ValidationSummary id="appValidationSummary" 
    ValidationGroup="appValidation" 
    DisplayMode="List" 
    EnableClientScript="true" 
    HeaderText="Loan application not ready" 
    runat="server" 
    Enabled="true" 
    Visible="true" 
    ShowSummary="true" /> 
<asp:Label ID="lblMessage" Font-Bold="true" ForeColor="Red" runat="server" /> 

<br /> 
Enter amount: 

<asp:RequiredFieldValidator ID="ApplicationAmountValidator" 
    ValidationGroup="appValidation" 
    ControlToValidate="txtApplicationAmount" 
    ErrorMessage="Application amount is required." 
    EnableClientScript="true" 
    Enable="true" 
    Display="Dynamic" 
    runat="server">+++</asp:RequiredFieldValidator> 

<asp:TextBox ID="txtApplicationAmount" Columns="6" runat="server" /> 

<br /><br /> 

<asp:Button ID="btnSave" runat="server" Text="Send Application" 
    CausesValidation="true" /> 

</form> 


</body> 
</html> 

페이지는의 RequiredFieldValidator 단일 텍스트 상자가 있습니다. 또한 ValidationSummary 컨트롤과 제출 버튼이 있습니다. (언로드시 호출 된 TEST() 메서드를 추가하여 콜백 직전의 페이지 상태를 확인했습니다.) 클라이언트 측 유효성 검사는 발생하지 않습니다. 대신 요청이 서버로 다시 전송됩니다. 서버에서 Validate()를 호출하면 유효성이 확인됩니다.

같은 결과를 가진 Page 지시문에 ValidateRequest = "true"를 추가하려고했습니다.

방출 된 자바 스크립트를 보면 몇 가지가 나에게 뛰어납니다. ValidatorOnSubmit는 항상 true를 돌려주는 것을 의미한다 Page_ValidationActive이 False로 설정되어 있는지

<script type="text/javascript"> 
<!-- 
var Page_ValidationActive = false; 
if (typeof(ValidatorOnLoad) == "function") { 
    ValidatorOnLoad(); 
} 

function ValidatorOnSubmit() { 
    if (Page_ValidationActive) { 
     return ValidatorCommonOnSubmit(); 
    } 
    else { 
     return true; 
    } 
} 
// --> 
</script> 

참고 : 여기의 일부입니다. WebUIValidation.js를 살펴보고 ValidatorCommonOnSubmit이 Page_ClientValidate() 메서드는 아무리해도 페이지의 유효성을 검사하지 않는다는 것을 제외하고는 이상하게 보입니다.하지만 어떻게 실행해야합니까?

내 TEST() 메서드에서 Page_ClientValidate()를 수동으로 호출하면 양식이 유효성 검사 클라이언트 쪽을 예상대로 가져오고 포스트 백 요청이 서버로 다시 전송됩니다.

동일한 결과로 FireFox 3.0.10 및 MSIE 7 모두에서 테스트했습니다.

나는 아주 기본적인 것을 놓치기를 기대하며 나는 매우 바보 같은 느낌을 갖게 될 것이라고 기대한다.

답변

2

동일한 유효성 검사 그룹에 모든 유효성 검사 항목이 있어야합니다. 유효성 검사를 실행하는 버튼을 포함합니다.

+0

나는 어리 석다는 것을 알았습니다 .--) 감사합니다. –

+0

이 해결 방법으로이 문제가 있었지만 이번에는 유효성 검사 그룹을 사방에 포함시켜 문제가 지속되었습니다. 마지막으로 내 web.config에서 xhtml 적합성을 올바르게 설정해야했습니다. 참조 : http://stackoverflow.com/questions/422554/asp-net-broken-rendering-of -validation-client-side-code-in-firefox –

관련 문제