ASP.NET 2.0 WebControlAdapters нельзя использовать на элементах управления Validator? - PullRequest
1 голос
/ 21 мая 2010

Я использую CompareValidator на странице и добавил ControlAdapter (через файл браузера) для просмотра всех классов BaseValidator (и их производных). Мой ControlAdapter ничего не делает - в настоящее время не переопределяет методы. Валидатор записывает тег span, его идентификатор и стиль, но больше ничего - ни сообщения об ошибке, ни javascript. Есть идеи почему?

1 Ответ

1 голос
/ 21 мая 2010

Упс;написал слишком рано.Ответ таков: стандартный WebControlAdapter переопределяет метод Render (), в котором происходит обработка Validator.Решение состоит в том, чтобы создать подкласс абстрактного System.Web.UI.Adapters.ControlAdapter и создать свой собственный адаптер (который на самом деле может быть пустым).

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();
    }
}

и добавить его в файл обзора:1004 *

        <adapter controlType="System.Web.UI.WebControls.BaseValidator"
            adapterType="UI.ControlAdapters.FieldError"
            />
...