C#-OnClientClick事件未从隐藏代码中注册JavaScript警报
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-OnClientClick事件未从隐藏代码中注册JavaScript警报,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1531字,纯文字阅读大概需要3分钟。
内容图文
![C#-OnClientClick事件未从隐藏代码中注册JavaScript警报](/upload/InfoBanner/zyjiaocheng/676/f616b4624dd94d6aa87bb609e22b3f6d.jpg)
好吧,我有一个令人尴尬的简单问题,希望可以得到一个令人尴尬的简单答案.我正在尝试获取一个asp:ImageButton来显示一条警报消息,其中包含来自我的代码隐藏的变量.这是代码的过度简化版本:
public string AlertMe
{
get
{
return "alert('hi');";
}
}
现在,当我尝试以这种方式访问??它时:
<asp:ImageButton ID="btn" runat="server" ImageUrl="/Images/img.ico" OnClientClick='<%=AlertMe%>'/>
我看到一个回发,但没有警报消息,好像它根本无法访问我的财产.同时,以下两行:
<%=AlertMe%><br />
<a onclick="<%=AlertMe%>">click this</a>
都工作正常,花花公子. (第一个显示javascript警报的代码,第二个显示没有问题的警报.)
所以我的大问题是:为什么ASP控件的OnClientClick事件无法注册警报?我是否缺少明显的缺陷,还是真的需要从代码隐藏处注册整个事件?
解决方法:
您不能使用<%= ...%>设置服务器控件属性的语法.若要在服务器控件上设置动态属性,必须在代码中进行设置.
this.btn.OnClientClick = this.AlertMe;
这是因为<%= ...%>是Response.Write()的快捷方式.因此,直到对aspx进行了解析,评估和渲染之后才调用它.到那时为时已晚.
作为在后面的代码中设置值的替代方法,可以使用这种准声明性技术:
<asp:ImageButton ID="btn" runat="server" ImageUrl="/Images/img.ico" />
<%
btn.OnClientClick = <%=AlertMe%>;
%>
还有其他解决方法. This answer to a similar question讨论了您可以采取的几种方法.我找不到任何专门提及此内容的“官方”参考(例如,msdn),但我看起来并不难.以下是一些讨论该问题的博客文章:
>吉姆·布莱克(Jim Black)的博客文章:Server tags cannot contain <% … %> constructs
> weblogs.asp.net上的博客文章:Use ExpressionBuilder To Avoid “Server tags cannot contain <% … %> constructs”
或google it with bing,让阅读更有趣.
内容总结
以上是互联网集市为您收集整理的C#-OnClientClick事件未从隐藏代码中注册JavaScript警报全部内容,希望文章能够帮你解决C#-OnClientClick事件未从隐藏代码中注册JavaScript警报所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。