2 Stimmen

Serversteuerung verhält sich seltsam

Ich habe ein Server-Steuerelement, das ich geschrieben habe und das im Allgemeinen gut funktioniert. Wenn ich jedoch die hervorgehobene Zeile einfüge, fügt es nicht eine, sondern zwei <br /> Elemente, und das ist nicht das, was ich will.

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

Haben Sie eine Idee, was ich falsch mache?

ETA:

Ich habe das Problem gelöst, indem ich das br mit jquery hinzugefügt habe, das ich dort ohnehin verwende. Aber das Verhalten, das ich gesehen habe, ist sicherlich falsch. Wenn ich ein Element hinzufüge, sollte es dieses Element hinzufügen, nicht zweimal dieses Element.

4voto

V4Vendetta Punkte 35598

HtmlGenericControl wird die mit den öffnenden und schließenden Tags erzeugt <br> y </br>

stattdessen könnten Sie verwenden new LiteralControl("<br/>") die das tun sollten, was Sie wünschen.

EDITAR

Um dies zu umgehen, benötigen Sie eine eigene Implementierung der HtmlGenericControl und erweitern sie für solche Fälle, die keine öffnenden und schließenden Tags haben.

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

Hier gefunden

0 Stimmen

Nein - dies fügt nur eine Spanne mit br darin ein. Der generierte Code hat den richtigen Tag, nur zweimal.

0 Stimmen

Danke, ich hatte das gleiche Problem, und Ihre zweite Lösung hat es gelöst.

0 Stimmen

Danke, div.Controls.Add(new LiteralControl("<br/>"); funktioniert bei mir, ähnliche Antwort auch in dieser Frage; stackoverflow.com/q/3095228/1847645

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X