使用 RegisterClientScriptBlock 在页面末尾注册脚本以避免 sys undefined 错误

Ale*_*x J 1 javascript asp.net webforms asp.net-ajax scriptmanager

当显示模式弹出窗口时,我需要以编程方式调用以下内容来设置某些内容。

Sys.Application.add_load(modalSetup);
Run Code Online (Sandbox Code Playgroud)

一些顺理成章的事情。

<script type='text/javascript'>
            Sys.Application.add_load(modalSetup);
            function modalSetup() {
                var modalPopup = $find("PopupBehaviorId");
                if (modalPopup != null) {
                    modalPopup.add_shown(SetFocusOnControl);
                }
            }

            function SetFocusOnControl() {
                alert('test');
            }
        </script>
Run Code Online (Sandbox Code Playgroud)

现在的问题是我script manager在主页上有一个。

如果我手动(不是以编程方式)将此脚本放在 的下面script manager in the master page,它将正常工作。

但是,当我使用任一方法以编程方式将其添加到模式弹出窗口(我需要)的用户控件中时ScriptManager.RegisterClientScriptBlock or Page.ClientScript.RegisterClientScriptBlock,它会引发著名的sys is undefined错误。

我知道这种情况正在发生,因为这个程序注入将其放入该行执行Head section之前。ScriptManager

我该如何解决这个问题。是否可以说将此脚本插入到页面末尾而不是顶部?

Yur*_*kiy 5

您可以使用 ScriptManager 的 RegisterStartupScript 方法。