javascript - 如何让 javascript eval 返回字符串而不是变量?

标签 javascript asp.net

我最近发帖询问如何将数据绑定(bind)数据传递给 JavaScript 函数。在帮助下,我得到了我想要的结果;然而,紧接着我又遇到了另一个问题。

    <asp:ImageButton ID="ImageButton1" CommandArgument='<%# Eval("MECNUM") %>' runat="server" ImageUrl="printer.png" OnClick="Display_OnClick"
                OnClientClick='<%# Eval("MECNUM", "Display_OnClientClick({0})") %>' />

假设 MECNUM 变成了 XYZ。不幸的是它会抛出一个错误,说 XYZ 是一个 undefined variable 。我真正想要的是传递字符串“XYZ”。放置 XYZ.toString() 不起作用,因为问题仍然是变量未定义。有什么想法吗?

    function Display_OnClientClick(mecnum) {
        alert(mecnum);
    }

非常感谢您的帮助

最佳答案

您需要将其括在双引号中。像这样。

'<%# Eval("MECNUM", "Display_OnClientClick(\"{0}\")") %>'

为什么需要这样做?

如果你不这样做,它将生成这样的 javascript - Display_OnClientClick(XYZ) 。 显然 XYZ 需要是 javascript 变量或者之前定义为 javascript 变量。为了掩盖这一点,您需要 Display_OnClientClick("XYZ") 。这里它会说 XYZ 是一个字符串并且可以工作。这是这里唯一的原因。

如果您遇到引号转义问题(js 错误),您可以引用此 - how to escape characters when using server side delimiters

关于javascript - 如何让 javascript eval 返回字符串而不是变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252978/

相关文章:

javascript - webpack 在全局范围内执行模块

javascript - 在 MAILTO 链接的正文中添加 HTML 链接

jQuery:如何从文件上传控件获取文件名?

c# - ASP.Net 应用程序对回发的加倍控制

javascript - 如何在 JavaScript 中按大写和小写拆分字符串?

javascript - 为什么ajax调用没有被命中

javascript - 函数的对象语法困惑

jquery - 当asp.net按钮单击事件完成时运行jquery函数

c# - 如何仅用一个 Controller 处理大量派生模型

c# - 在 asp.net mvc 中更改 session 变量超时的默认值