0
我寫了一個.NET Web用戶控件。它包含一些服務器控件和一些支持JavaScript。訪問服務器控件與控件ID關聯?
我還有一個全球性的ValidateMyControl()
JavaScript函數,它返回一個值,指示當前控件是否包含有效數據。該函數可以在包含該控件的頁面上的JavaScript中調用。
我的問題是當我的控件在頁面上有多個實例時。我可以讓頁面的客戶端腳本像這樣傳遞控件ID:
ValidateMyControl('<%= MyControl.ClientID %>');
這將標識代碼試圖驗證哪個實例。
但是,我的ValidateMyControl()
控件如何使用該ID來引用與請求的實例關聯的服務器控件。
我以爲沒有想到的東西似乎爲我而來。有小費嗎?或者以不同的方式來處理像這樣的多個實例?
編輯:
所以一個方法,我認爲是這樣的:
var instanceData = {};
$(function() {
instanceData['<%= this.ClientID %>'] = {
HiddenID: '<%= hdnCompanyId.ClientID %>',
TextID: '<%= txtCompanyName.ClientID %>',
ErrorMessageID: '<%= divErrorMessage.ClientID %>'
};
});
的想法是初始化該控件實例映射到的ID中的對象添加到一個數組它是服務器控件。
但這似乎效率低下。很想找到更好的方法。
似乎是一個合理的建議,但我發現控制本身沒有任何元素。它呈現子控件,但容器沒有元素。 – 2014-08-29 03:21:41
將用戶控件的內容封裝在Panel(客戶端上的div)中,並使用'ValidateMyControl('<%= MyControl.Panel.ClientID%>');'。甚至在具有id =「<%= MyControl.ClientID%>」'的非runat-server div中。 – Igor 2014-08-29 03:42:36