开发继承自HyperLink控件的自定义控件的问题.
自已想写一个继承自HyperLink控件的自定义控件,就是利用HyperLink控件的NavigateUrl属性实现mailto:mail地址,这样的功能.可我发现重写不了这个属性的?请高手帮帮忙.谢谢.
代码如下:
using System;
using System.Web;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace myHyperLink
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class nhHyperLink : HyperLink
{
public string Email
{
get
{
return ((string)ViewState[ "Email "] == null) ? string.Empty : (string)ViewState[ "Email "] ;
}
set
{
ViewState[ "Email "] = value;
}
}
public override string NavigateUrl
{
get
{
return ((String)ViewState[ "NavigateUrl "] == null) ? string.Empty : "mailto: " + Email;
}
set
{
ViewState[ "NavigateUrl "] = value;
}
}
}
}
出错提示:
“myHyperLink.nhHyperLink.NavigateUrl.get” : 无法重写继承成员“System.Web.UI.WebControls.HyperLink.NavigateUrl.get”,因为它未标记为 virtual、abstract 或 override
[解决办法]
NavigateUrl属性不允许重写,所以你重写是错的
用new 关键字
public new string NavigateUrl
[解决办法]
使用new 关键字
public new string NavigateUrl
这样会覆盖父类的此特征
[解决办法]
使用new的话就会覆盖掉原属性,所以链接无效。
最好新建一个属性,设为email地址,然后把这个地址在自定义控件内部赋值给NavigateUrl