2011-03-10 54 views
3

嗨我想写一个javascript生成<%= element.ClientID% >其中element是函数的输入参数之一。我试图写一个变量如何使用JavaScript字符串动态创建'<%= ... ClientID%>'?

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

这是给了一个错误

CS0117:“串”不包含“clientID的”一个 定义

+3

什么错误你得到? – 2011-03-10 22:06:50

+1

它给了什么错误? – 2011-03-10 22:07:51

+2

你会得到什么错误? (遵循趋势) – 2011-03-10 22:08:32

回答

8

这将引发错误因为服务器端处理<%%>标签首先发生。然后,结果以文本形式输出,在这种情况下为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的元素,你可以找到它在JavaScript中,使用jQuery,就像这样:

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

0

正如EndangeredMassa指出的那样,您的服务器端处理正在评估<%(可能是ERB?)。

尝试逃离<%=与& LT;%=

相关问题