【问题标题】:ASP.Net Custom Control - override onkeyupASP.Net 自定义控件 - 覆盖 onkeyup
【发布时间】:2012-07-09 14:59:48
【问题描述】:

我遇到了一个看似简单的问题,却给我带来了很多麻烦。我已经为 ASP.NET 中的文本框定义了一个自定义控件,它具有内置的 onkeyup 属性。我的问题是,在使用此控件时,我想覆盖 onkeyup,但它似乎不起作用。我的源代码如下:

this.Attributes.Add("onkeyup", "javascript:" + onKeyUp + ";"); // for the custom control

以及使用时

< myControl:SpecialTextBox ID="txtValue" runat="server"/>

在后面的代码中我确实设置了

txtValue.Attributes.Add("onKeyUp", "DefaultValue();");

但是,我继续获取自定义控件中定义的 onkeyup,而不是更具体的。 有什么解决办法吗?非常感谢!

【问题讨论】:

    标签: asp.net onkeyup


    【解决方案1】:

    尝试在页面的代码隐藏中使用txtValue.Attributes["onKeyUp"] = "DefaultValue();";,这将覆盖您的自定义控件。

    【讨论】:

      【解决方案2】:

      您可以将属性添加到您的CustomControl

      public string OnClientKeyUp { get { /**/ } set { /**/ }
      

      OnInit 中设置默认值,以便稍后在页面中覆盖(例如Page_Load)。

      【讨论】:

        【解决方案3】:

        您可以尝试在您的用户控件上添加一个属性,如下所示:

        public string KeyUp
        {
            get
            {
                if (txtValue.Attributes["onKeyUp"] == null)
                    return string.Empty;
        
                return txtValue.Attributes["onKeyUp"]
            }
            set
            {
                txtValue.Attributes["onKeyUp"] = value;
            }
        }
        

        并且在您的服务器端 asp.net 标签上,您可以调用此属性并设置值:

        <myControl:SpecialTextBox ID="txtValue" runat="server" KeyUp="DefaultValue();" />
        

        【讨论】:

          猜你喜欢
          • 2014-04-14
          • 1970-01-01
          • 1970-01-01
          • 2011-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-01
          相关资源
          最近更新 更多