Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与控件ID关联的访问服务器控件?_Javascript_.net_Webforms_Webusercontrol - Fatal编程技术网

Javascript 与控件ID关联的访问服务器控件?

Javascript 与控件ID关联的访问服务器控件?,javascript,.net,webforms,webusercontrol,Javascript,.net,Webforms,Webusercontrol,我已经编写了一个.NETWeb用户控件。它包括一些服务器控件和一些支持JavaScript的控件 我还有一个全局ValidateMyControl()JavaScript函数,它返回一个值,指示当前控件是否包含有效数据。可以从包含控件的页面上的JavaScript调用此函数 我的问题是当一个页面上有多个控件实例时。我可以让页面的客户端脚本像这样传递控件ID: ValidateMyControl('<%= MyControl.ClientID %>'); var instanceDa

我已经编写了一个.NETWeb用户控件。它包括一些服务器控件和一些支持JavaScript的控件

我还有一个全局
ValidateMyControl()
JavaScript函数,它返回一个值,指示当前控件是否包含有效数据。可以从包含控件的页面上的JavaScript调用此函数

我的问题是当一个页面上有多个控件实例时。我可以让页面的客户端脚本像这样传递控件ID:

ValidateMyControl('<%= MyControl.ClientID %>');
var instanceData = {};

$(function() {
    instanceData['<%= this.ClientID %>'] = {
        HiddenID: '<%= hdnCompanyId.ClientID %>',
        TextID: '<%= txtCompanyName.ClientID %>',
        ErrorMessageID: '<%= divErrorMessage.ClientID %>'
    };
});
其思想是在初始化期间向数组添加一个对象,该对象将控件实例映射到其服务器控件的ID


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

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

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

这似乎是一个合理的建议,但我发现控件本身没有任何元素。它呈现子控件,但容器没有元素。将用户控件的内容包装在面板中(客户端上的div),并使用
ValidateMyControl(“”)。甚至在具有
id=”“
的非runat服务器div中。