Frage

Ich entwickle bei der Arbeit eine ASP.NET Web-Anwendung, und ich in das gleiche Problem immer wieder ausgeführt wird:

Manchmal möchte ich HTML auf die Seite aus dem Code-behind schreiben. Zum Beispiel habe ich eine Seite, Editor.aspx, mit Ausgang auf, der auf dem Wert eines GET-Variable, variiert in Abhängigkeit „Ansicht“. Mit anderen Worten, "Editor.aspx? View = Äpfel" gibt unterschiedliche HTML als "Editor.aspx? View = Orangen".

ich zur Zeit Ausgang dieses HTML mit Stringbuilder. Zum Beispiel, wenn ich eine Liste erstellen wollte, könnte ich die folgende Syntax verwenden:

myStringBuilder.AppendLine("<ul id=\"editor-menu\">");
myStringBuilder.AppendLine("<li>List Item 1</li>");
myStringBuilder.AppendLine("</ul>");

Das Problem ist, dass ich eher ASP.NET die List-Steuerelement zu diesem Zweck verwenden würde, weil mehrere Linien der String Syntax meines Code der Lesbarkeit behindern. Allerdings ASP.NET-Steuerelemente ist in der Regel Ausgabe gewundener HTML, mit einzigartigem IDs, Inline-Styles, und gelegentlichen Block von Inline-JavaScript.

Meine Frage ist, gibt es eine ASP.NET-Steuerung, die lediglich einen allgemeinen HTML-Tag repräsentiert? Mit anderen Worten ist es eine Kontrolle wie das folgende Beispiel:

HTMLTagControl list = new HTMLTagControl("ul");
list.ID = "editor-menu";
HTMLTagControl listItem = new HTMLTagControl("li");
listItem.Text = "List Item 1";
list.AppendChild(listItem);

Ich weiß, es sind Wrapper und das so, sondern ASP.NET Komplexität zu bändigen, würde ich eher mit Einfachheit aus dem get-go starten.

War es hilfreich?

Lösung

  

gibt es ein ASP.NET-Steuerelement der   stellt lediglich einen allgemeinen HTML-Tag?

Ja, es ist die Htmlgenericcontrol :)

Was genau das, was Sie wollen nicht, aber man kann es umgehen leicht:

HtmlGenericControl list = new HtmlGenericControl("ul");
list.ID = "editor-menu";
HtmlGenericControl listItem = new HtmlGenericControl("li");
listItem.InnerText = "List Item 1";
list.Controls.Add(listItem);

Wenn Sie wirklich auf blankem Metall brauchen, um nach unten, dann sollten Sie die Htmltextwriter Klasse anstelle eines Stringbuilder wie es Brauch Abpumpen von reinem HTML zugeschnitten ist.

Andere Tipps

Wenn Sie wollen einfach nur die Ergebnisse Ihrer Stringbuilder zu einer leeren Steuer zuordnen, können Sie eine <asp:Literal /> Steuerung für diese.

LiteralControl hat constractor, dass Sie Ihre HTML passieren kann ... Ich denke, es ist besser.

neue LiteralControl (sb.ToString ());

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top