2010-06-12 73 views
3

如何扩展一个compareValidator,这样我可以检查,如果用户在ControlToValidate中写入了一些文本,那么他也必须在ControlToCompare中写入一些文本。扩展Asp.net CompareValidator

回答

1

尝试:

public class ExtendedCompareValidator : CompareValidator 
{ 

    protected override void OnPreRender(EventArgs e) 
    { 
     if (!string.IsNullOrEmpty(this.ControlToValidate) && string.IsNullOrEmpty(this.ControlToCompare)) 
      throw new HttpException("You have to set the 'ControlToCompare' property."); 

     base.OnPreRender(e); 
    } 

} 

的Web.Config

<pages> 
    <tagMapping> 
    <add tagType="System.Web.UI.WebControls.CompareValidator, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mappedTagType="MyWebApp.ExtendedCompareValidator, MyWebApp"/> 
    </tagMapping> 
</pages> 
+0

我将如何使用此验证器?的? – coure2011 2010-06-12 06:42:08

+0

你不需要改变任何东西。使用传统的'CompareValidator'控件,ASP.NET将其与新的'映射'。 – 2010-06-12 07:24:53

+0

没有它没有工作。它具有与正常的CompareValidator控件相同的行为。 – coure2011 2010-06-12 07:42:06

1

你并不需要延长CompareValidator来解决这个问题。在两个控件上使用RequiredFieldValidator来验证它们不是空的。这种方法具有在客户端进行验证的优点,因此避免了往返服务器。