findcontrol()在html和asp.net控件/元素中的奇怪之处?

时间:2012-01-19 23:41:32

标签: asp.net listview input imagebutton findcontrol

有人可以提供一个解释,为什么asp:imagebutton给我一个格式错误的html错误而html输入元素没有?我知道它是关于onclientclick中的findcontrol() 分配。它们的格式完全相同,但也许它们不应该是?

 <ItemTemplate>
     <input type="image" src="Resources/info.png"         onclick="toggle('<%# Container.FindControl("PresetUploadDescription").ClientID %>');return false;" /> 
     <asp:ImageButton ImageUrl="Resources/info.png" OnClientClick="toggle('<%# Container.FindControl("PresetUploadDescription").ClientID %>');return false;" ToolTip="info" ID="Description" runat="server"/>
.... 

1 个答案:

答案 0 :(得分:0)

您无法使用&lt;%...%&gt;构造在服务器上执行的控件中。 (RUNAT = “服务器”)

&LT;%#...%GT;用于数据绑定或Eval类型语句。

&LT;%= ...%GT;相当于一个Response.Write语句,它看起来就像你想要做的那样(写出某个控件的ClientID)。不幸的是,这也行不通 - 你会得到一个

  

服务器代码不能包含&lt;%...%&gt;结构体。错误

要修复,您需要通过Code Behind页面将OnClientClick属性添加到Imagebutton控件:

Description.Attributes.Add("OnClientClick", 
"toggle('" + FindControl("PresetUploadDescription").ClientID + "');return false;");