Question

Je développe une application Web ASP.NET au travail, et je continue à courir le même problème:

Parfois, je veux écrire HTML à la page du code-behind. Par exemple, j'ai une page, Editor.aspx, avec une sortie qui varie en fonction de la valeur d'une variable GET, « vue ». En d'autres termes, "Editor.aspx? View =" pommes différentes sorties HTML que "Editor.aspx? View = oranges".

ce code HTML avec StringBuilder en sortie. Par exemple, si je voulais créer une liste, je pourrais utiliser la syntaxe suivante:

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

Le problème est que je préfère utiliser le contrôle de la liste de ASP.NET à cet effet, parce que plusieurs lignes de syntaxe StringBuilder entravent la lisibilité de mon code. Cependant, les contrôles ASP.NET ont tendance à afficher une page HTML alambiquée, avec ID uniques, les styles en ligne, et le bloc occasionnel de JavaScript en ligne.

Ma question est, est-il un contrôle ASP.NET qui représente simplement une balise HTML générique? Autrement dit, est-il un contrôle comme l'exemple suivant:

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

Je sais qu'il ya des emballages et tel, mais au lieu de dompter la complexité de ASP.NET, je préfère commencer par la simplicité du rendez-vous aller.

Était-ce utile?

La solution

  

est-il un contrôle ASP.NET qui   représente simplement une balise HTML générique?

Oui, il est appelé HtmlGenericControl :)

En ce qui concerne exactement ce que vous voulez pas, mais vous pouvez vous déplacer facilement:

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

Si vous avez vraiment besoin de se mettre à nu métal, vous devez utiliser le HtmlTextWriter classe au lieu d'un StringBuilder car il est plus taillé sur mesure pour pomper HTML brut.

Autres conseils

Si vous voulez simplement affecter les résultats de votre stringbuilder à un contrôle à blanc, vous pouvez utiliser un contrôle <asp:Literal /> pour cela.

LiteralControl a constractor que vous pouvez passer votre code html ... Je pense qu'il vaut mieux.

new LiteralControl (sb.ToString ());

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top