访问活动?

时间:2011-09-11 11:33:21

标签: asp.net controls

我有一个关于在运行时生成图像的问题,这也是链接。好的,我要做的是创建一个ImageButton,然后将onClick事件设置为如下所示:

window.open('http://www.themagicfinger.com/')

这意味着它看起来像:

newImage.Click += (window.open('http://www.themagicfinger.com/'));

然后我意识到这不起作用,因为它寻找一个匹配事件delagate的方法。

所以我的问题是,这是实现我想要的最佳方式,如果是,我该如何才能实现?

我头脑中的另一个选择是将图像包装在标签中,但我认为这样做更好。

由于

2 个答案:

答案 0 :(得分:2)

您需要的是OnClientClick

<asp:ImageButton id="ImageButton1" runat="server" OnClientClick="window.open('http://www.themagicfinger.com/'); return false;" ImageUrl="MyButton.png" />

此属性是字符串,而不是事件,您也可以在后面的代码中分配它:

ImageButton1.OnClientClick = "window.open('http://www.themagicfinger.com/'); return false;";

答案 1 :(得分:0)

如果您询问如何使用服务器端代码告诉客户端打开浏览器窗口,则不能。服务器端代码无法告诉客户端这样做。你可以从服务器端代码做的唯一事情是发出客户端,这样做。在这种情况下,为什么要使用服务器端代码?

例如,使用jQuery,您可以附加点击事件,如下所示:

<!-- page header (including loading jQuery), other stuff that's before the image, etc. -->
<img src="/path/to/image" alt="some text" id="imgOpenWindow" />
<!-- the rest of the page -->
<script type="text/javascript">
  $(document).ready(function() {
    $('#imgOpenWindow').click(function(){
      window.open('http://www.themagicfinger.com/');
    });
  });
</script>

如果由于某种原因你需要为此使用ImageButton控件,那么它将如下所示:

<!-- page header (including loading jQuery), other stuff that's before the image, etc. -->
<asp:ImageButton run="server" id="imgOpenWindow" ImageUrl="/path/to/image" AlternateText="some text" />
<!-- the rest of the page -->
<script type="text/javascript">
  $(document).ready(function() {
    $('#<%= imgOpenWindow.ClientID %>').click(function(){
      window.open('http://www.themagicfinger.com/');
    });
  });
</script>

但是我不确定回发后的行为是什么。它可能会覆盖JavaScript处理程序(通过在执行处理程序之前回发)或在窗口打开后回发等等。我会认为该行为是未定义且不可靠的。但是,如果您不需要按钮回发功能,Image控件就能解决问题。