2008-12-01 18 views

回答

2

好了,你可以做的主要事情是要確保你的JavaScript函數足夠抽象的,他們沒有連接到HTML控件的特定實例 - 讓他們接受參數,使您可以傳遞對象的各個實例中

無論您在給定頁面上有多少用戶控件實例,只需在頁面中存在一次即可完成所需魔法的JavaScript,因此您的功能需要無視這一事實。

沒有關於你想要做什麼的更多信息,我可以通過幫助的方式提供更多信息;這取決於你的情況。


編輯:我已經處理了這個問題的具體方面的一種方法是創建用戶控制(因此它是在多個實例相同的變量)的靜態屬性跟蹤的客戶端ID的各種用戶控制元素(用戶控件將客戶ID添加到此列表中的OnLoad事件);然後,在OnPreRender事件(IIRC)中,將這些呈現給我的代碼知道要在客戶端上查找並操作的JavaScript變量中。我不知道如果是有道理的,但它可能會幫助別人......

0
function <%=this.ClientID %>_myButton_onclick() 
{ 
    DoSomething(); 
} 

<button id="myButton" onclick="<%=this.ClientID %>_myButton_onclick()"> 

請注意,在這種情況下,控制是一個普通的HTML控件。

+0

這段代碼的主要問題是,現在我們有一堆包裝函數會污染全局名稱空間 - 還有其他一些問題,比如說這太類似於可怕的經典的ASP內聯代碼。 。:)但是這只是一個偏好問題,它不是太邪惡的... – 2008-12-01 22:57:12

0

如果你的控件有多個函數,你可以把它放在外部的js文件中並引用它。

this.Page.ClientScript.RegisterClientScriptInclude("searchcontrol.js","includes/searchcontrol.js"); 
相關問題