自已想写一个继承自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

解决方案 »

  1.   

    NavigateUrl属性不允许重写,所以你重写是错的
    用new 关键字
    public new string NavigateUrl
      

  2.   

    现我将代码修改如:
    public virtual new string NavigateUrl
              {
    get
    {
                  return ((String)ViewState["NavigateUrl"] == null) ? string.Empty : "mailto:" + Email;
    }
    set
    {
    ViewState["NavigateUrl"] = value;
    }
    }在使用该控件时,可以在NavigateUrl属性中加入mailto:[email protected],可按f5调试时,根本就没有链接,就是只显示text属性的内容.这是为什么呀?
      

  3.   

    使用new 关键字
    public new string NavigateUrl这样会覆盖父类的此特征
      

  4.   

    使用new的话就会覆盖掉原属性,所以链接无效。
    最好新建一个属性,设为email地址,然后把这个地址在自定义控件内部赋值给NavigateUrl