我已经编写了一个.NET Web用户控件。它包括一些服务器控件和一些支持JavaScript。
我还有一个全局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。
但这似乎效率低下。很想找到更好的方法。
答案 0 :(得分:0)
将class
属性设置为用户控件内的服务器控件 - 即使未定义此类css类也是如此。然后:
function ValidateMyControl(aControlId) {
var companyId = $("#" + aControlId).find(".classCompanyId").val();
...
}