与Control ID关联的Access Server Control?

时间:2014-08-28 22:45:23

标签: javascript .net webforms webusercontrol

我已经编写了一个.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。

但这似乎效率低下。很想找到更好的方法。

1 个答案:

答案 0 :(得分:0)

class属性设置为用户控件内的服务器控件 - 即使未定义此类css类也是如此。然后:

function ValidateMyControl(aControlId) {
  var companyId = $("#" + aControlId).find(".classCompanyId").val();
  ...
}