Domanda

Sto sviluppando un'applicazione Web ASP.NET sul posto di lavoro, e io continuo a correre lo stesso problema:

A volte ho voglia di scrivere codice HTML per la pagina dal code-behind. Ad esempio, ho una pagina, Editor.aspx, con uscita che varia a seconda del valore di una variabile GET "vista". In altre parole, "Editor.aspx Mostra = mele" uscite diverse HTML di "Editor.aspx Mostra = arance".

Io attualmente in uscita questo HTML con StringBuilder. Per esempio, se ho voluto creare una lista, potrei utilizzare la seguente sintassi:

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

Il problema è che avrei preferito usare il controllo Lista di ASP.NET per questo scopo, perché diverse linee di sintassi StringBuilder ostacolano la leggibilità del mio codice. Tuttavia, i controlli ASP.NET tendono ad uscita contorto HTML, con l'identificazione unica di stili inline, e il blocco occasionale di JavaScript inline.

La mia domanda è: esiste un controllo ASP.NET che rappresenta semplicemente un tag HTML generica? In altre parole, v'è un controllo come il seguente esempio:

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

So che ci sono involucri e il tale, ma invece di domare ASP.NET complessità, avrei preferito iniziare con semplicità dal get-go.

È stato utile?

Soluzione

  

c'è un controllo ASP.NET che   solo rappresenta un tag HTML generica?

Sì, si chiama il HtmlGenericControl :)

Per quanto riguarda esattamente quello che vuoi no, ma si può aggirare facilmente:

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

Se avete veramente bisogno di scendere a metallo nudo allora si dovrebbe utilizzare il HtmlTextWriter classe invece di uno StringBuilder come è più personalizzato su misura per pompare fuori HTML grezzo.

Altri suggerimenti

Se si desidera assegnare solo i risultati del vostro StringBuilder per un controllo in bianco, è possibile utilizzare un controllo <asp:Literal /> per questo.

LiteralControl ha constractor che è possibile passare il vostro html ... penso che sia meglio.

nuovo LiteralControl (sb.ToString ());

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top