2010-08-18 53 views
2

我有一个名为RolloverLink的UserControl,基本上包含一个asp:LinkButton<img />。我尝试设置onclick处理程序是这样的:UserControl中的LinkBut​​ton回发但不会触发OnClick

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeBehind="RolloverLink.ascx.cs" Inherits="Controls.RolloverLink" %> 
<asp:LinkButton runat="server" ID="mug" OnClick="propagate" 
    CausesValidation="false" onmouseout="MM_swapImgRestore()" > 
     <img runat="server" ID="pug" name="<%# pug.ClientID %>" border="0" /> 
</asp:LinkButton> 

我把一个断点在propagate方法,但它不停止那里。该页面发回(闪烁),但事件不会被调用。

下面是我的代码背后的样子:

public partial class RolloverLink : System.Web.UI.UserControl 
{ 
    private string _imageRl; 
    public string Href { get; set; } 
    public string ImageUp { get { return pug.Src; } set { pug.Src = value; } } 
    public string ImageRl { 
     get 
     { 
      return _imageRl; 
     } 
     set 
     { 
      _imageRl = value; 
      mug.Attributes["onmouseover"] = "MM_swapImage('"+pug.ClientID+"','','"+_imageRl+"',1)"; 
     } 
    } 
    public string Alt { get { return pug.Alt; } set { pug.Alt = value; } } 
    public int Width { get { return pug.Width; } set { pug.Width = value; } } 
    public int Height { get { return pug.Height; } set { pug.Height = value; } } 
    public event EventHandler Click 
    { 
     add{click += value; } 
     remove { click -= value; } 
    } 
    private event EventHandler click; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.Url.AbsolutePath.EndsWith(Href)) 
      ImageUp = ImageRl; 
    } 
    protected void propagate(object sender, EventArgs e) 
    { 
     EventHandler copy = click; 
     if (copy != null) 
      copy(this, EventArgs.Empty); 
     else 
      Response.Redirect(Href); 
    } 
} 

,这是我如何使用它我的母版页:

<pwc:RolloverLink ID="contacts" Href="Contacts.aspx" 
    ImageRl="images/M_contacts_rl.png" ImageUp="images/M_contacts_up.png" 
    Alt="Initech Global : Laurierville, Qu&eacute;bec, Canada" Width="61" 
    Height="17" runat="server" /> 

有没有人有一个想法或一个指针的想法?

+0

检查LinkBut​​ton的对所有同一个客户端文章 - 您可以通过检查浏览器上的元素来检查 – 2010-08-18 16:27:44

+0

ClientID似乎每页加载都保持不变:'Initech Global : Laurierville, Québec, Canada'。 – 2010-08-18 18:51:25

回答

0

您要添加的单击事件,然后在此代码

public event EventHandler Click 
{ 
    add{click += value; } 
    remove { click -= value; } 
} 

我想你想删除一个点击事件的引用,可能是那里,然后增加了一个参考取出点击你正在定义的事件。只需切换删除&添加,它应该工作。

public event EventHandler Click 
{ 
    remove { click -= value; } 
    add{click += value; } 

} 
+0

这不应该阻止'传播'从射击。如果你看'传播'试图点击''click'',如果它已经从外部对象设置 – 2010-08-18 16:26:01

0

这看起来像添加事件处理器的单击事件的非标准方式:

您是否尝试过的标准语法:

_mug.Click += new EventHandler(value); 
相关问题