Управление сервером ведет себя странно

У меня есть серверный элемент управления, который я написал, который в целом работает нормально. Однако, когда я добавляю в выделенную строку, это добавляет не один, а два <br /> элементы, что не то, что я после.

mounting=new DropDownLabel();
mounting.ID="mountTypeList";
mounting.Attributes.Add("class", "mounting");
mounting.Values=Configuration.MountTypes.GetConfiguration().Options;
mounting.Enabled=Utilities.UserType == UserType.Admin;
mounting.Value=value.Reference;
td1.Controls.Add(mounting);
**td1.Controls.Add(new HtmlGenericControl("br"));**
var span=new HtmlGenericControl("span");
span.Attributes.Add("class", "mountDescription");
span.ID="mountDescription";
td1.Controls.Add(span);

Есть мысли о том, что я делаю не так?

ETA:

Я разрешил ситуацию, добавив br с помощью jquery, который я в любом случае использую там. Но поведение, которое я видел, безусловно, неверно. Если я добавлю элемент, он должен добавить этот элемент, а не вдвое больше этого элемента.

1 ответ

Решение

HtmlGenericControl сгенерирует с открывающим и закрывающим тегами <br> а также </br>

вместо этого вы могли бы использовать new LiteralControl("<br/>") который должен делать то, что вы хотите.

РЕДАКТИРОВАТЬ

Чтобы обойти это, вам понадобится ваша собственная реализация HtmlGenericControl и расширить его для таких случаев, с которыми не связаны открывающие и закрывающие теги.

public class HtmlGenericSelfClosing : HtmlGenericControl
{
    public HtmlGenericSelfClosing()
        : base()
    {
    }

    public HtmlGenericSelfClosing(string tag)
        : base(tag)
    {
    }

    protected override void Render(HtmlTextWriter writer)
    {
        writer.Write(HtmlTextWriter.TagLeftChar + this.TagName);
        Attributes.Render(writer);
        writer.Write(HtmlTextWriter.SelfClosingTagEnd);
    }

    public override ControlCollection Controls
    {
        get { throw new Exception("Self-closing tag cannot have child controls"); }
    }

    public override string InnerHtml
    {
        get { return String.Empty; }
        set { throw new Exception("Self-closing tag cannot have inner content"); }
    }

    public override string InnerText
    {
        get { return String.Empty; }
        set { throw new Exception("Self-closing tag cannot have inner content"); }
    }
}

Нашел здесь

Другие вопросы по тегам