C# CustomValidator中的Render函数从何处获取属性?

C# CustomValidator中的Render函数从何处获取属性?,c#,asp.net,C#,Asp.net,我扩展了CustomValidator以插入一个标记,而不是CustomValidator使用的默认标记。我目前使用以下代码来完成此操作 public class MyValidator : CustomValidator { protected override void Render(HtmlTextWriter writer) { writer.RenderBeginTag("small"); base.Render(writer);

我扩展了CustomValidator以插入一个
标记,而不是CustomValidator使用的默认
标记。我目前使用以下代码来完成此操作

public class MyValidator : CustomValidator
{
    protected override void Render(HtmlTextWriter writer)
    {
        writer.RenderBeginTag("small");
        base.Render(writer);
        writer.RenderEndTag();
    }
}
但是,这只是将
标记放在
标记中

<small>
    <span 
        id="ContentPlaceHolder1_MainForm_CustomAliasValidator"
        class="error"
        style="visibility:hidden;">
        Alias contains invalid characters.
    </span>
</small>

别名包含无效字符。
因此,我似乎需要获取
标记的属性,并将它们注入
。但是,
writer
是函数
Render
中唯一可用的参数。据我所知,
HtmlTextWriter
只是一个用于呈现html内容的类。
base.Render()
从何处获取这些属性,以及如何在类中使用它们?

的文档告诉我们它调用了,和。您只覆盖了
Render
以输出包装标记,而不更改任何基本行为

您应该能够重写该属性以返回
htmltextwittertag.Small
,从而将
更改为
标记

<small>
    <span 
        id="ContentPlaceHolder1_MainForm_CustomAliasValidator"
        class="error"
        style="visibility:hidden;">
        Alias contains invalid characters.
    </span>
</small>

为了回答您的问题,
RenderBeginTag
(在您的案例中,它输出原始的
标记)首先调用which calls,然后这些属性将在下一次调用时显示,以

谢谢。成功了!我一直认为
Render
是继承自
BaseValidator
的函数,但是
BaseValidator
实际上覆盖了
WebControl
中的函数,我没有注意到。顺便说一句,我想你拼错了
RenderBeginTag