0

为清楚起见,请考虑以下基于母版页文件的表单。

表格

<%@ 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被调用并在单击按钮时发出警报)。先感谢您!

4

1 回答 1

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

但首先你必须检查浏览器的错误控制台。可能由 scriptreferrence 加载的脚本会引发错误,并且所有其他脚本的执行都已停止。

于 2012-11-29T07:33:30.557 回答