假設您需要將一些JavaScript功能附加到ASP.NET用戶控件,其中可能有任何給定頁面上有多個實例。由於JavaScript具有共享的全局狀態,您可以使用哪些技術來保持控件的每個實例的客戶端狀態和行爲是分開的?你如何處理附加JavaScript到UserControls在ASP.NET中,並保持多個實例隔離?
0
A
回答
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");
相關問題
- 1. 隔離並實例化正在處理的C庫
- 2. appdomain加載一個COM DLL多次並保持內存隔離
- 3. javascript處理setTimeout()的多個實例?
- 4. 附加到Chrome實例並在選項卡中運行JavaScript
- 5. JavaScript:保持JavaScript對象的多個實例在完成後處置?
- 6. Wcf隔離實例
- 7. 如何同時處理多個併發實例?
- 8. 如何在ASP.Net 4.0 C#中處理多個回調?示例
- 9. 如何處理多個上傳並保存在CakePHP中
- 10. 如何使用多字符分隔符分割字符串,並保持分離
- 11. ASP.Net中的Javascript Intellisense Usercontrols
- 12. 如何在Flex中處理類實例?
- 13. 你如何處理GWT中Messages類的實例化?
- 14. 如何在ASP.NET中處理或關閉XML文檔的實例
- 15. 如何確保沒有處理程序附加到事件?
- 16. 你如何處理你的web應用程序中的附件?
- 17. 你如何處理NHibernate中的併發?
- 18. 兩個相互隔離的vertx實例
- 19. 如何將opengl顯示附加到JFrame並正確處理它?
- 20. NIFI - 隔離式處理器
- 21. 處理集合的多個實例?
- 22. 對象字面處理多個實例
- 23. 如何保持WSGI發動多個實例
- 24. 如何處理由DataTemplate創建的usercontrols
- 25. 你如何管理添加一個對象的多個實例到MVC中的瞬態對象?
- 26. 添加到$ _GET附加值,保持老
- 27. 在ASP.Net中處理CSS的策略MVC UserControls
- 28. 如何在.htaccess中處理多個空格分隔的單詞?
- 29. Asp.NET如何處理多個請求
- 30. 當你在一個表中得到一個不能爲空的外鍵時,你如何處理一個案例?
您確定不需要重構?你能提供一些代碼嗎? – netadictos 2008-12-01 22:18:08