0

我遇到了一个看似简单的问题,却给我带来了很多麻烦。我已经为 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,而不是更具体的。有什么解决办法吗?非常感谢!

4

3 回答 3

2

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

于 2012-07-09T15:03:36.520 回答
1

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

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();" />
于 2012-07-09T15:07:42.797 回答
1

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

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

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

于 2012-07-09T15:04:06.230 回答