为什么这不起作用?
<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没有做任何事情。
答案 0 :(得分: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}");'