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

时间:2011-04-22 13:23:20

标签: javascript asp.net webforms

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

变量目前仅为_showNameDiv等。

我想将这些全部放在一个共同的命名空间上,以使事情变得更加清晰,例如MyCompany.Toggles.ShowNameDiv

我尝试创建命名空间

var MyCompany = { 
                  Toggles: {}
                }

在后面的代码中执行此操作:

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

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

有没有办法做我想做的事情? 我是以错误的方式来做这件事的吗? 是否有更好的替代方案可以获得同样的好处?

请记住这是旧代码,我无法重写整个页面。我试图做一个渐进的步骤,我可以用它作为一个例子,我可以向我的同事展示。

1 个答案:

答案 0 :(得分:1)

如果不知道这些代码到底做了什么(特别是JavascriptRegistrar),很难弄清楚可能出现什么问题。

一个可能的问题可能是您声明的javascript“命名空间”的范围。 通过使用“var”关键字,您不会将命名空间设置为全局,而是仅在其定义的闭包中定义。 我想JavascriptRegistrar类注册的javascript代码需要一个全局变量,但没有找到,所以返回undefined

这里有一段代码可以“暴露”你的变量:

(function(window, undefined) {

    var myCompany = {
                        Toggles: {}
                    };

    window.MyCompany = myCompany;

})(window);