我在 .aspx page(html markup)中有一个脚本:
<div id="alert">
<asp:Label ID="lblAlert" style="font-size: xx-large" runat="server"></asp:Label>
</div>
<!-- /.alert -->
<script>
function AutoHideAlert(v) {
var al = document.getElementById('<%=lblAlert.ClientID%>');
al.innerText = v;
$("#alert").fadeTo(3500, 500).slideUp(1500, function () {
$("#alert").slideUp(500);
});
}
</script>
我在 aspx.cs file(code-behind)中调用AutoHideAlert(v)
函数,使用RegisterStartupScript
,我在ShowMessage
中添加了RegisterStartupScript
:
private void ShowMessage(string msg)
{
ScriptManager.RegisterStartupScript(this, GetType(), null, "AutoHideAlert('"+msg+"');", true);
}
问题是我调用ShowMessage
方法,该方法包含脚本代码行不起作用。但是,当我运行脚本代码行时,它的工作原理;问题是为什么它不使用ShowMessage
?
编辑1:从 @m4n的评论中,我通过将第三个参数设置为"Alert Message"
,但它仍然不起作用。
private void ShowMessage(string msg)
{
ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message", "AutoHideAlert('"+msg+"');", true);
}
我想ScriptManager.RegisterStartupScript
在生成方法的脚本之前会生成脚本。正如JS目前执行浏览器所读取的那样,因此在执行AutoHideAlert
时,如果不存在尝试使用$(document).ready
是您有jQuery
ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
"$(document).ready(function(){ AutoHideAlert('"+msg+"'); }", true);
或 document.addEventListener('DOMContentLoaded'
无jquery
ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
"document.addEventListener('DOMContentLoaded',
function(){ AutoHideAlert('"+msg+"'); })", true);