0

为什么这不起作用?

 <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 什么都不做。

4

1 回答 1

2

最好的办法是查看生成的 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}");'
于 2013-04-29T23:22:55.457 回答