Estoy usando el objeto XElement para construir algo de HTML en el código subyacente en una página ASP.NET.Cómo evitar System.Xml.Linq.XElement escaparse de contenido HTML?
que puede o no puede agregar algunos XAttributes a este XElement a medida que avanzo, de la siguiente manera:
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
);
Ahora, si quiero añadir algo de contenido en myDiv que contiene HTML, el XElement escapa automáticamente de esto, lo cual, en mi situación, no es deseable.
Así que si tengo:
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
"<span id='content'>hello world</span>"
);
Y entonces me hacen esto en un objeto marcador de posición usando el siguiente código:
myPlaceholder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = elmnt.CreateNavigator().OuterXml });
Cuando se carga la página, la fuente revela que el contenido interno en el interior elmnt se ha escapado y tiene el siguiente formato en la fuente de la página:
<span id='content'>hello world</span>
Dado que el XML que estoy compilando aquí es HTML válido, y el contenido interno también es HTML válido, ¿cómo puedo decirle al objeto padre de XElement que no escape el contenido interno? ¿Cómo puedo dejarlo en su formato nativo?
la clase HtmlTextWriter se marca como 'MustInherit', así que con mi conocimiento limitado No estoy seguro de la mejor manera de poner en práctica un HtmlTextWriter en mi objeto XElement. Sé que es una gran pregunta, pero ¿podrías dar un pequeño ejemplo de cómo convertiría (usando mi ejemplo anterior) ' hello world' en un objeto HtmlTextWriter? – awj
También debo mencionar que estoy dispuesto a utilizar la clase XElement porque estoy usando un caché personalizado que acepta XElements, pero no estoy seguro de si aceptará una instancia de HtmlTextWriter. Además, ¿sugiere que sustituya todo el XElement con un HtmlTextWriter en lugar de usarlo para contener simplemente el HTML interno? – awj
@awj ver mi publicación actualizada sobre el uso. No entiendo de qué MustInherit está hablando, pero de todos modos, esta clase es pública y ya está implementada. Sugiero que para compilar html, HtmlTextWriter es mucho más simple y poderoso que XElement. XElement es más general – archil