2013-04-29 73 views
0

为什么不能正常工作?使用带参数的字符串格式设置onclick

<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

是否有一个'接受()'在你的JavaScript功能 – Barmar 2013-04-29 23:05:08

+1

什么是生成html看起来像?有没有js错误? – 2013-04-29 23:05:29

+1

你在控制台上得到了什么错误? – Basic 2013-04-29 23:21:51

回答

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}");' 
+0

我HTMLEncoded命令字符串,它的工作原理非常完美。 – 2013-04-30 19:25:53

相关问题