你怎么得到javascript eval来返回字符串而不是变量?

时间:2014-12-02 15:27:40

标签: javascript asp.net

我最近发布了询问如何将数据绑定数据传递给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是一个未定义的变量。我真正想要的是字符串&#34; XYZ&#34;被通过。放XYZ.toString()没有工作,因为问题仍然是未定义的变量。有什么想法吗?

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

非常感谢你的帮助

1 个答案:

答案 0 :(得分:2)

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

'<%# 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