1

ページでCompareValidatorを使用しており、すべてのBaseValidatorクラス(およびその派生物)を監視するために(browserfileを介して)ControlAdapterを追加しました。私のControlAdapterは何もしません-現在、メソッドをオーバーライドしません。バリデーターはスパンタグを書き込みます。これはIDとスタイルですが、それ以外は何もありません。エラーメッセージやJavaScriptはありません。なぜ何かアイデアはありますか?

4

1 に答える 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 に答える