2011-04-22 43 views
1

我想清理一些較舊的代碼,並且它當前使用了ScriptManager中用於顯示/隱藏頁面部分的Javascript代碼的變量集。在ASP.NET的JavaScript名稱空間上設置變量背後的Webform代碼

的變量,目前只是_showNameDiv

我希望把這些所有到一個公共的命名空間,以使事情有點清潔劑,如MyCompany.Toggles.ShowNameDiv

我試圖創建一個命名空間

var MyCompany = { 
        Toggles: {} 
       } 

和代碼背後的內做到這一點:

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

但我只對變量得到'undefined'。 (GetJavaScriptRegistrar是ScriptManager的包裝器)。

有沒有辦法做我想做的事情? 我該怎麼做呢? 有沒有更好的選擇可以讓我獲得同樣的好處?

請記住這是舊的代碼,我不能做整個頁面重寫。我正在嘗試採取一個漸進的步驟,以便將其用作我可以向我的同事展示的一個示例。

+0

爲什麼你需要C#的數據存儲到JavaScript的?根據原因,我們可以建議將數據轉換爲JavaScript的替代方案。 – Raynos 2011-04-22 17:20:54

回答

1

那麼很難確定什麼是問題而不知道這些代碼的確切內容(特別是JavascriptRegistrar)。

一個可能的問題可能是您聲明的JavaScript「命名空間」的範圍。 通過使用「var」關鍵字,您不會使命名空間成爲全局的,它只在它定義的閉包中定義。 我想JavaScriptRegistrar類註冊的JavaScript代碼需要一個全局變量,並且沒有找到任何內容,所以它返回undefined

下面一段代碼來「揭露」 gloabally你變量:

(function(window, undefined) { 

    var myCompany = { 
         Toggles: {} 
        }; 

    window.MyCompany = myCompany; 

})(window);