我遇到的问题很简单,给我带来了很多麻烦。我在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而不是更具体的控件。 这有什么解决方案吗?非常感谢你!
答案 0 :(得分:2)
尝试在页面的代码发布中使用txtValue.Attributes["onKeyUp"] = "DefaultValue();";
,这将覆盖您的自定义控件。
答案 1 :(得分:1)
您可以向CustomControl
添加媒体资源:
public string OnClientKeyUp { get { /**/ } set { /**/ }
在OnInit
中设置默认值,以便稍后在页面中覆盖(例如Page_Load
)。
答案 2 :(得分: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();" />