我在将参数传递给客户端事件的问题上有问题。
每当我通过eval参数,时,即使我在OnClientClick
代码中写下"return false;"
,也有一个postback :
OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>'
我尝试了不同的事情,包括我在类似问题中发现的一些解决方案。
我也尝试过:
OnClientClick='<%# string.Format("toggleContactDetails({0});return false;", Eval("ItemId"))%>'
或玩引号;没有什么可用。
我知道该功能甚至都没有运行,因为我为测试而写了:
function toggleContactDetails(itemId) {
confirm(itemId);
}
在JavaScript文件中,没有出现消息。
有什么建议?
您在这个示例中有问题:
OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>'
问题是将其渲染到这样的浏览器:
onclick="toggleContactDetails(Item Name 1); return false;"
这是损坏的javascript
(Item Name 1
周围缺少引号),因此,当您单击按钮时,javascript
无法正确运行,这意味着不运行return false;
。反过来,这意味着postback
将被触发。为了使其工作,您必须渲染正确的javascript
:
OnClientClick='<%# "toggleContactDetails("" + Eval("ItemId") + ""); return false;" %>'
只有相关区别是"
在几个地方。
您必须从JavaScript函数返回值。
OnClientClick='<%# "return toggleContactDetails("+ Eval("ItemId")+ ");" %>'
javaScript:
<script type="text/javascript">
function toggleContactDetails(itemId) {
return confirm(itemId);
}
</script>
我找到了这个技巧
OnClientClick='<%# JS("alert""" + Eval("item","")+""") %>'
然后在CodeBehind中:
public static string JS(jsname)
{
return string.Format("{0}", js);
}