不使用方法

时间:2017-09-23 19:48:59

标签: javascript c# asp.net registerstartupscript

我的 .aspx 页面中有一个脚本(HTML标记):

<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>

我使用AutoHideAlert(v) aspx.cs 文件(代码隐藏)中调用RegisterStartupScript函数,并在{{{}}中添加了RegisterStartupScript 1}}方法:

ShowMessage

问题是当我调用包含脚本代码行的private void ShowMessage(string msg) { ScriptManager.RegisterStartupScript(this, GetType(), null, "AutoHideAlert('"+msg+"');", true); } 方法时,它无效。但是当我运行脚本代码行然后它的工作;问题是为什么它没有与ShowMessage一起运行?

编辑1:来自@ M4N的评论,我通过将第三个参数设置为ShowMessage来尝试它,但它仍无效。

"Alert Message"

1 个答案:

答案 0 :(得分:1)

我认为ScriptManager.RegisterStartupScript在生成带有方法的脚本之前生成脚本。由于JS在浏览器读取时执行,因此在执行时AutoHideAlert如果还不存在的话 尝试使用$(document).ready你有JQuery

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
     "$(document).ready(function(){ AutoHideAlert('"+msg+"'); }", true);

或者没有JQuery的document.addEventListener('DOMContentLoaded'

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
     "document.addEventListener('DOMContentLoaded', 
                                function(){ AutoHideAlert('"+msg+"'); })", true);