在repeater imagebutton onclientclick中将变量传递给javascript

在repeater imagebutton onclientclick中将变量传递给javascript,javascript,asp.net,Javascript,Asp.net,我想将动态值从imagebutton onclientclick事件传递给javascript函数。 如果我像这样传递静态值,它可以正常工作 不知道ASP,但在JSP中,表达式必须是整个值。尝试: OnClientClick="<%# "javascript:return openWindow('" + Eval("PujaType") + "')" %>" /> OnClientClick=”“/> 我使用ASP.NET已经有一段时间了,目前还不能测试它,但我似乎记得在包

我想将动态值从imagebutton onclientclick事件传递给javascript函数。 如果我像这样传递静态值,它可以正常工作


不知道ASP,但在JSP中,表达式必须是整个值。尝试:

OnClientClick="<%# "javascript:return openWindow('" + Eval("PujaType") + "')" %>" />
OnClientClick=”“/>

我使用ASP.NET已经有一段时间了,目前还不能测试它,但我似乎记得在包装
时需要单引号

大概是这样的:

<asp:ImageButton ImageUrl="~/Images/control_play_blue.png" ForeColor="Transparent"
                        BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat" 
                        OnClientClick='<%# "javascript:return openWindow('" + Eval("PujaType") + "')" %>' />
void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {

  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {

     String pujaType = ((YourType)e.Item.DataItem).PujaType;

     ((ImageButton)e.Item.FindControl("btnChat")).OnClientClick = "javascript:return openWindow('" + pujaType + "')";
  }
}


另一种选择是使用常规html而不是ASP.NET控件,因为您没有使用任何服务器端事件。这可以通过锚定和img标签完成,如下所示:

<a href="#" onclick="openWindow('<%# Eval("pujaType") %>'); return false;">
  <img src='<%= ResolveUrl("~/Images/control_play_blue.png") %>' />
</a>

Eval
语句周围不需要字符串连接。这样做会创建无效的标记

改变

“javascript:返回openWindow(“+”)”

“javascript:返回openWindow(“”)”


@user2969030-参见备选方案
<asp:ImageButton    
     ImageUrl="~/Images/control_play_blue.png"ForeColor="Transparent"   
     BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat" 
     OnClientClick="javascript:return openWindow('<%#Eval("PujaType") %>')" />