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

发布于 2024-12-27 20:32:55 字数 577 浏览 2 评论 0原文

谁能解释为什么 asp:imagebutton 给我一个格式错误的 html 错误,而 html input 元素却没有?我知道这是关于 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"/>
.... 

Can anyone offer an explanation as to why the asp:imagebutton gives me a badly formed html error while the html input element does not? I know it's about the findcontrol() in the onclientclick
assignment. They're written in exactly the same format but maybe they shouldn't be?

 <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"/>
.... 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云归处 2025-01-03 20:32:57

您不能使用 <%...%>在服务器上执行的控件中构造。 (runat="服务器")

<%#...%>用于数据绑定或 Eval 类型语句。

<%=...%>相当于 Response.Write 语句,它看起来像您正在尝试执行的操作(写出某个控件的 ClientID)。不幸的是,这也行不通——你会得到一个

服务器标签不能包含<% ... %>构造。错误

,您需要通过“代码隐藏”页面将 OnClientClick 属性添加到 Imagebutton 控件:

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

You cannot use a <%...%> construct in a control that is executed at the server. (runat="server")

<%#...%> is used for databinding or Eval type statements.

<%=...%> is equivalent to a Response.Write statement, which looks like what you are trying to do (write out the ClientID of a certain control). Unfortunately, this won't work either - you'll get a

Server tags cannot contain <% ... %> constructs. Error

To fix, you need to Add the OnClientClick attribute to the Imagebutton control via the Code Behind page:

Description.Attributes.Add("OnClientClick", 
"toggle('" + FindControl("PresetUploadDescription").ClientID + "');return false;");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文