代码之家  ›  专栏  ›  技术社区  ›  David Pratte

UserControl中的LinkButton返回,但不触发OnClick

  •  2
  • David Pratte  · 技术社区  · 16 年前

    我有一个名为RolloverLink的用户控件,它基本上包含 asp:LinkButton 和一个 <img /> . 我尝试如下设置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" />
    

    是否有人有想法或指向想法的指针?

    2 回复  |  直到 14 年前
        1
  •  0
  •   TheGeekYouNeed    16 年前

    您正在添加Click事件,然后在此代码中删除它

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

    我认为您正在尝试删除对可能存在的单击事件的引用,然后添加对您定义的单击事件的引用。只需切换到删除和添加,它就可以工作了。

    public event EventHandler Click
    {
        remove { click -= value; }
        add{click += value; }
    
    }
    
        2
  •  0
  •   Daniel Dyson    16 年前

    这看起来是向Click事件添加事件处理程序的非标准方法:

    您是否尝试过标准语法:

      _mug.Click += new EventHandler(value);