0

我扩展了 CustomValidator 以插入一个<small>标签,而不是 CustomValidator 使用的默认<span>标签。我目前使用以下代码来执行此操作。

public class MyValidator : CustomValidator
{
    protected override void Render(HtmlTextWriter writer)
    {
        writer.RenderBeginTag("small");
        base.Render(writer);
        writer.RenderEndTag();
    }
}

但是,这只是将<span>标签放在标签内<small>

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

所以看来我需要获取<span>标签的属性并将它们注入<small>. 但是,writer是函数中唯一可用的参数Render。据我所知,HtmlTextWriter只是一个渲染html内容的类。从哪里base.Render()获得这些属性以及如何在课堂上使用它们?

4

1 回答 1

1

WebControl.Render的文档告诉我们它调用了WebControl.RenderBeginTagWebControl.RenderContentsWebControl.RenderEndTag。您只覆盖Render以输出包装标签,而没有更改任何基本行为。

您应该能够覆盖WebControl.TagKey属性以返回HtmlTextWriterTag.Small以将您更改<span><small>标记。

要回答您的问题,RenderBeginTag(在您的情况下输出原始<label>标签)首先调用WebControl.AddAttributesToRender调用HtmlTextWriter.AddAttribute,然后这些属性将显示在下一次调用HtmlTextWriter.RenderBeginTag

于 2013-09-25T05:34:22.110 回答