如何使用JavaScript字符串创建'<%= ... ClientID%>'动态?

时间:2011-03-10 22:03:36

标签: javascript asp.net string

您好我尝试编写一个javascript generate <%= element.ClientID% >,其中element是函数的输入参数之一。我正在尝试写一个变量

var elementName = "<%=" + element + ".clientID%>" 

发出错误

  

CS0117:'string'不包含   'clientID'的定义

2 个答案:

答案 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;%=