ページでCompareValidatorを使用しており、すべてのBaseValidatorクラス(およびその派生物)を監視するために(browserfileを介して)ControlAdapterを追加しました。私のControlAdapterは何もしません-現在、メソッドをオーバーライドしません。バリデーターはスパンタグを書き込みます。これはIDとスタイルですが、それ以外は何もありません。エラーメッセージやJavaScriptはありません。なぜ何かアイデアはありますか?
1 に答える
2
おっと; 書くのが早すぎた。答えは次のとおりです。標準の WebControlAdapter は Render() メソッドをオーバーライドします - ここで Validator の処理が行われます。解決策は、抽象 System.Web.UI.Adapters.ControlAdapter をサブクラス化し、独自の Adapter (実際には空である可能性があります) を作成することです。
public class ValidatorAdapter : System.Web.UI.Adapters.ControlAdapter { }
public class FieldError : ValidatorAdapter
{
protected void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "fieldError");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
}
protected override void Render(HtmlTextWriter writer)
{
RenderBeginTag(writer);
base.Render(writer);
RenderEndTag(writer);
}
protected void RenderEndTag(HtmlTextWriter writer)
{
writer.RenderEndTag();
}
}
そして、これをブラウズ ファイルの に追加します。
<adapter controlType="System.Web.UI.WebControls.BaseValidator"
adapterType="UI.ControlAdapters.FieldError"
/>
于 2010-05-21T13:37:28.050 に答える