日期:2014-05-19  浏览次数:20494 次

开发继承自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