我正在爲網站評論系統,並在每次回發頁面上生成一個用戶控件(稱爲ucComment)用於數據庫中與此頁面相關的每個註釋。每個ucComment都有一個響應按鈕,允許您響應每個單獨的評論。解決ASP.NET 3.5控件ID生成:在後續回發中以不同順序創建控件時的回發事件
當我最終意識到每次創建新評論時,迴應按鈕都沒有做任何事情,下一次回發會偏移所有頁面的控件ID。換句話說,當我點擊ctl00_Content_ctl00_ctl01_ctl0 _lbtnRespond時,該控件實際上會在下一個回傳中生成爲ctl00_Content_ctl00_ctl01_ctl0 _lbtnRespond。所以與ctl07相關的事件根本就不會發生。
雖然在網絡上徘徊,我讀了關於覆蓋ClientID。我想如果我可以按照自己想要的方式命名控件,我可以繞過我的問題。 http://west-wind.com/Weblog/posts/4605.aspx 它看起來像一個偉大的黑客攻擊,但它不會觸發事件,因爲頁面上生成的ID和控制樹中如何表示ID之間的差異。
甚至還有誰從母版衍生更改控制樹的作品獲得上述的黑客攻擊,爲回發的工作方式一個傢伙: http://www.netquarry.com/index.php/2009/03/master-pages-ajax-and-javascript-10292/ 但我擔心可能有難言的反響。
我應該怎麼做才能讓我的評論系統工作,以便我可以回覆特定的評論,並且即使控件在該回發中被重命名,響應事件仍然會觸發?
哇,這是你!哈哈。謝謝你回到我身旁。實際上,我已經決定改變一切,轉向ASP.NET 4.0,並且在處理這個特定問題方面非常出色。我將我的ClientIDMode設置爲靜態,並使用您在編輯中提到的技術。我確實發現你的解決方案令人印象深刻,這一次它一直爲你工作真是太好了。感謝您的迴應 – HaterTot 2010-10-04 18:18:53