【问题标题】:How to use JavaScript strings to create a '<%= ...ClientID %>' dynamically?如何使用 JavaScript 字符串动态创建 '<%= ...ClientID %>'?
【发布时间】:2011-03-11 06:30:00
【问题描述】:

您好,我正在尝试编写一个 javascript 生成 &lt;%= element.ClientID% &gt;,其中元素是函数的输入参数之一。我正在尝试写一个变量

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

这是一个错误

CS0117:“字符串”不包含 “clientID”的定义

【问题讨论】:

  • 你遇到了什么错误?
  • 它给出了什么错误?
  • 你得到什么错误? (跟风)
  • CS0117:“字符串”不包含“clientID”的定义
  • 现在该错误出现在哪里? :) 这将在一分半钟内解开谜题。 (见Visual Studio Error CS0117

标签: javascript asp.net string


【解决方案1】:

这会引发错误,因为 标记的服务器端处理首先发生。然后,结果以文本形式输出,在本例中为 JavaScript。所以,服务器看到这个&lt;%=" + element + ".clientID%&gt; 并抛出一个错误,因为它无法理解。假设字符串 " + element + " 是调用了 .clientID 的值。

有两种方法可以解决这个问题。

选项 1:输出所有 ID

对元素的所有可能值进行哈希处理。如果你有两个以上,这种方法可能不适合你。

var elements = [
    coolbutton: '<%= coolbutton.ClientId %>',
    simplebutton: '<%= simplebutton.ClientId %>',
    otherbutton: '<%= otherbutton.ClientId %>'
];

然后你可以通过这样做来获取id:

var elementId = elements[element];

选项 2:使用 Ends-with

如果您可以使用 jQuery,那么有一种方便的方法可以通过 ID 引用 ASP.Net 控件。本质上,所有 ASP.Net Id 都以您在后面的代码中使用的实际变量名称结尾。因此,如果您有一个名为 CoolButton 的元素,您可以使用 jQuery 在 javascript 中找到它,如下所示:

var element = $('[id$=CoolButton]');

$= 运算符表示以结尾。因此,它会查找页面上 ID 以 CoolButton 结尾的所有元素。页面上 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

【讨论】:

    【解决方案2】:

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

    尝试使用 <%=

    转义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 2022-06-25
      • 2017-03-21
      • 2011-09-13
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多