从ASP设置Javascript命名空间上的变量.. NET Webform代码后面



我正在尝试清理一些旧代码,它目前使用ScriptManager设置的变量在Javascript代码中使用,以显示/隐藏页面的部分。

当前变量仅为_showNameDiv

我想把这些都放在一个共同的命名空间,使事情更干净一点,如MyCompany.Toggles.ShowNameDiv

我试图创建一个命名空间

var MyCompany = { 
                  Toggles: {}
                }

在后面的代码中这样做:

JavaScriptRegistrar javaScriptRegistrar = GetJavaScriptRegistrar();
javaScriptRegistrar.Register("MyCompany.Toggles.ShowNameDiv", true);

但是我只得到'undefined'。(GetJavaScriptRegistrar是ScriptManager的包装器)。

有办法做我想做的事吗?我是不是走错路了?有没有更好的选择能让我得到同样的好处?

请记住这是旧代码,我不能重写整个页面。我正在尝试做一个渐进的步骤,我可能会用它作为一个例子,我可以展示给我的同事。

如果不知道这些代码(特别是JavascriptRegistrar)究竟是做什么的,就很难找出问题所在。

一个可能的问题可能是你声明的javascript"命名空间"的范围。通过使用"var"关键字,您没有使命名空间成为全局的,它只是在定义它的闭包中定义的。我认为javascript代码的JavascriptRegistrar类注册期望一个全局变量,没有找到任何,所以它返回undefined

这里有一段代码来"暴露"全局变量:

(function(window, undefined) {
    var myCompany = {
                        Toggles: {}
                    };
    window.MyCompany = myCompany;
})(window);

最新更新