您好我尝试编写一个javascript generate <%= element.ClientID% >
,其中element是函数的输入参数之一。我正在尝试写一个变量
var elementName = "<%=" + element + ".clientID%>"
发出错误
CS0117:'string'不包含 'clientID'的定义
答案 0 :(得分:8)
这会引发错误,因为&lt; %%&gt;的服务器端处理标签首先发生。然后,结果以文本形式输出,在这种情况下是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;
}
更多here讨论了这种类型的功能。
答案 1 :(得分:0)
正如EndangeredMassa所指出的,您的服务器端处理正在评估&lt; %%&gt; (也许ERB?)。
尝试转义&lt;%= with&amp; lt;%=