代码应该可以工作,但它给了我这个错误..反汇编说这个“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>
答案 0 :(得分:0)
如果暂时忘记导致错误的原因,结果是页面抱怨无法呈现错误,因为找到了<%= %>
直接呈现到页面的字符串。
一种解决方案是使用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 + "';";