使用带参数的字符串格式设置onclick

本文关键字:格式 设置 onclick 字符串 参数 | 更新日期: 2023-09-27 18:11:20

为什么不行?

 <input type="button" id="btnAccept" value="Accept" onclick='<%# String.Format("accept('{0}','{1}','{2}','{3}-{4}');", Container.DataItem("PositionID"), Container.DataItem("ApplicantID"), Container.DataItem("FullName"), Container.DataItem("DepartmentName"), Container.DataItem("PositionTitle"))%>' />

onclick不做任何事情

使用带参数的字符串格式设置onclick

最好的方法是查看生成的HTML。我认为这是一个很好的习惯,检查生成的HTML文本格式如何呈现在屏幕上,所有的时间。除了这样的错误(很容易在生成的HTML中发现),它还可以帮助您捕获其他可能的无效HTML使用,这些错误可能在一个浏览器中按预期呈现,而在另一个浏览器中却呈现得很糟糕。HTML渲染引擎使用许多技巧来尝试使无效的HTML看起来正常。

无论如何,除了所有的事情(例如,假设accept(...)存在,并且标签中的所有其他调用都是正确的),我认为您遇到的问题如下:

onclick='<%# String.Format("accept('{0}','{1}','{2}','{3}-{4}');", ... )%>'

这一行可能会像这样求值:

onclick='accept('{0}','{1}','{2}','{3}-{4}');'

使用所有单引号,所有onclick属性将看到的是onclick='accept(',这不是一个有效的javascript方法调用。你会想要使用"字符串,你可以通过转义将其嵌入到格式字符串中。

String.Format("accept('"{0}'",'"{1}'",'"{2}'",'"{3}-{4}'");", ... )

然后,您应该能够在属性中获得'和"的正确组合:

onclick='accept("{0}","{1}","{2}","{3}-{4}");'