2012-11-28 49 views
0

爲了清晰起見,請考慮以下基於主頁面文件的表單。ScriptManager與CustomValidator客戶端驗證功能衝突

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Secured_Test" MasterPageFile="~/MasterPages/Test_SiteMaster.master" %> 

<asp:Content runat="server" ContentPlaceHolderID="MainPageContent"> 

    <script type="text/javascript"> 
    function ClientValidate(source, args) 
    { 
     alert('foo'); 
    } 
    </script> 

    <asp:DropDownList runat="server" id="ddl"> 
    <asp:ListItem Text="value 1" Value="1" /> 
    <asp:ListItem Text="value 2" Value="2" /> 
    </asp:DropDownList> 

    <asp:CustomValidator ID="CustomValidator1" runat="server" Text="Error!" ClientValidationFunction="ClientValidate" /> 

    <asp:Button ID="Button1" runat="server" Text="Submit" CausesValidation="true" /> 

</asp:Content> 

我的母版頁包含以下代碼:

<asp:ScriptManager ID="ToolkitScriptManager1" runat="server"> 
    <Scripts> 
    <asp:ScriptReference Name="jquery" /> 
    </Scripts> 
</asp:ScriptManager> 

問題/問題:

原樣,ClientValidate功能永遠不會觸發。如果我在我的MasterPageFile中刪除了ScriptManager調用,代碼將按預期工作(調用ClientValidate,並在單擊該按鈕時發出警報)。先謝謝你!

回答

0
if(!Page.ClientScript.IsClientScriptBlockRegistered("method")){ 
string [email protected]" 
    function ClientValidate(source, args) 
    { 
     alert('foo'); 
    }"; 
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "method", script, true) 
} 

但首先你必須檢查瀏覽器的錯誤控制檯。也許scriptreferrence加載的腳本會引發錯誤,並且所有其他腳本執行都會停止。

+0

我會給這個鏡頭 - 謝謝!同時,我簡單地註釋了masterpage腳本引用。 – Joel