繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM