0

コードは機能するはずですが、このエラーが発生しています..逆アセンブリでは、「AjaxControlToolkit.ExtenderControlBase.OnLoad(System.EventArgs)」と表示されます

 var timeoutID;

    function delayedAlert() {
        document.getElementById('<%= Label3.ClientID %>').style.display = 'inherit';
            timeoutID = window.setTimeout(labelhide, 3000);
    }

    function labelhide() {
        document.getElementById('<%= Label3.ClientID %>').style.display = 'none';
    }

テキストボックス

 <asp:Button ID="Button1" runat="server"  Onclick = "Button1_Click" 
            OnClientClick = "javascript:delayedAlert(); return SubmitForm();" 
            Text="Submit" Width="98px"/>

ラベル

<asp:Label ID="Label3" runat="server" Text="Entry Successful!" Visible="False" ForeColor="Lime"  ></asp:Label>
4

1 に答える 1

0

エラーの原因を少し忘れると、<%= %>ページへの文字列の直接レンダリングであることが判明したため、ページがレンダリングできないというエラーが表示されます。

1 つの解決策は、Literalコントロールを使用して、好きな背後にあるコードでレンダリングすることです。

例えば:

function delayedAlert() {
    document.getElementById('<asp:Literal runat="server" id="txtTheId" EnableViewState="false" />').style.display = 'inherit';
        timeoutID = window.setTimeout(labelhide, 3000);
}

そしてコードビハインドについて

txtTheId.Text = Label3.ClientID.ToString();

もちろん、これはエラーを回避するためのアイデアにすぎません。コード ビハインドで完全な JavaScript をレンダリングしたり、スクリプトを登録したり、ID を変数としてレンダリングしたりできます。

例えば:

<asp:Literal runat="server" id="txtTheId" EnableViewState="false" />    
var timeoutID;

function delayedAlert() {
    document.getElementById(Label3ID).style.display = 'inherit';
        timeoutID = window.setTimeout(labelhide, 3000);
}

function labelhide() {
    document.getElementById(Label3ID).style.display = 'none';
}

そしてコードビハインドであなたが持っている

txtTheId.Text = "var Label3ID='" + Label3.ClientID + "';";
于 2013-06-18T21:51:02.650 に答える