![](/img/trans.png)
[英]Jquery/Javascript: How can I get ClientID for dynamically generated controls
[英]How to use JavaScript strings to create a '<%= …ClientID %>' dynamically?
嗨我试着写一个javascript生成<%= element.ClientID% >
其中element是函数的输入参数之一。 我正在尝试写一个变量
var elementName = "<%=" + element + ".clientID%>"
这是一个错误
CS0117:'string'不包含'clientID'的定义
这会引发错误,因为<%%>标记的服务器端处理首先发生。 然后,结果以文本形式输出,在这种情况下是JavaScript。 因此,服务器看到此<%=" + element + ".clientID%>
并抛出错误,因为它无法理解。 假设字符串" + element + "
是在其上调用.clientID
的值。
有两种方法可以解决这个问题。
选项1:输出所有ID
对元素的所有可能值进行哈希。 如果你有一对以上,这种方法可能不适合你。
var elements = [
coolbutton: '<%= coolbutton.ClientId %>',
simplebutton: '<%= simplebutton.ClientId %>',
otherbutton: '<%= otherbutton.ClientId %>'
];
然后你可以通过这样做得到id:
var elementId = elements[element];
选项2:使用结束
如果你可以使用jQuery,那么有一种方便的方法可以通过ID引用ASP.Net控件。 基本上,所有ASP.Net ID都以你在后面的代码中使用的实际变量名结束。 所以,如果你有一个名为CoolButton的元素,你可以使用jQuery在javascript中找到它,如下所示:
var element = $('[id$=CoolButton]');
$ =运算符表示结束。 因此,它会在页面上找到所有以CoolButton结尾的ID的元素。 页面上ASP.Net控件的实际ID会很长,但它总会以NamingContainer$CoolButton
。
如果你不能使用jQuery,你可以自己编写这个逻辑。
function findByIdEndsWith(endId) {
//loop through all elements on the page
//if the current element's id ends with endId, return it
//return null;
}
这里将更详细地讨论这种类型的功能。
正如EndangeredMassa所指出的,您的服务器端处理正在评估<%%>(可能是ERB?)。
尝试使用&lt;%=转义<%=
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.