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 に答える