2009-06-03 88 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控件和一個提交按鈕。 (我添加了在Unload上調用的TEST()方法,以在回調之前檢查頁面的狀態。)沒有發生客戶端驗證;而是將請求發送回服務器。如果我在服務器上調用Validate(),那麼我會得到驗證。

我已經嘗試添加ValidateRequest =「true」到頁面指令具有相同的結果。

當我看着發射的JavaScript,有幾件事情跳到我身上。這裏是它的一部分:

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

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

注意Page_ValidationActive設置爲False,這意味着ValidatorOnSubmit總是返回true。對我來說這似乎很奇怪,除了我看着'WebUIValidation.js',並且看到ValidatorCommonOnSubmit無論如何都不驗證頁面 - Page_ClientValidate()方法,但是我怎樣才能讓它運行?

在我的TEST()方法中,當我手動調用Page_ClientValidate()時,表單確實得到驗證的客戶端 - 並且回發請求被髮送回服務器。

我用FireFox 3.0.10和MSIE 7測試過,結果相同。

我希望我錯過了一些非常基本的東西,我最終會覺得很愚蠢 - 任何人都可以指出它嗎?

回答

2

您必須在同一個驗證組中擁有所有驗證內容。包括啓動驗證的按鈕。

+0

我知道我最終會覺得愚蠢:-)謝謝。 – 2009-06-03 13:03:08