2009-09-04 10 views
15

Pregunta simple, lo sé, pero parece que no puedo encontrar una manera de poner tanto comillas simples como dobles en la cadena del texto propiedad de un Literal en asp.netASP.NET: comillas simples o dobles dentro de la propiedad de texto de Literal

<asp:Literal runat="server" id="Literal1" Text="This is my "text", isn't it pretty" /> 

Por ejemplo, en el fragmento de código anterior. La secuencia se cierra en la primera cita doble alrededor de 'texto'. Sé que podría reemplazarlos con comillas simples (o usar todas las comillas dobles y ajustar la cadena entre comillas simples), pero no estoy seguro de cómo usar ambas. Escapar de las comillas no parece funcionar.

Establecer la cadena en el código subyacente es una opción, por supuesto, donde puedo escapar las comillas dobles, pero siempre he pensado que es mejor mantener el texto estático en el aspx, en lugar de saturar el código subyacente .

Respuesta

27

Puede probar el enitity HTML para el signo de comillas: &quot;

<asp:Literal runat="server" id="Literal1" Text="This is my &quot;text&quot;, isn't it pretty" /> 
+0

Sí, los archivos ASP.NET Web Forms son básicamente archivos XML, y las reglas XML normales se aplican a ellos. En este caso, utiliza entidades XML estándar para escapar de la comilla. En una nota relacionada: para escapar de un signo de y comercial ('&'), usaría '&'. – Blixt

+0

* facepalm * Soy un idiota. Yo uso estos TODO EL TIEMPO. Debo haber tenido mis copos estúpidos esta mañana, y olvidé todo sobre ellos. – Jeff

+0

Esto es en realidad lo que MS parece preferir, ya que si usa la técnica sugerida de IP y ejecuta 'Generar recurso local' (que formatea el texto) esto resulta en la página. – Jeff

6

Se puede utilizar:

<asp:Literal id="literal1" runat="server">This is my "text", isn't it pretty</asp:Literal> 

Esto debería funcionar para usted

+0

¿El texto configurado de esta manera es recogido por las herramientas integradas para la globalización? – Jeff

+1

Falta la identificación, pero me gusta esta la mejor. +1 – tvanfosson

+0

Lo siento, a menudo dejo el ID desactivado si sé que nunca tendré que acceder desde el código subyacente, y luego no se obtiene una identificación enorme en el código generado. – Paul

1

Yo sugeriría caracteres de escape, pero No conozco una forma de usar esos en línea. En cambio, use el código para inicializar el valor.

<asp:Literal runat="server" id="Literal1" Text="" /> 

... 

Literal1.Text = "This is my \"text\", isn't it pretty?"; 

O bien, puede utilizar la codificación HTML como se sugiere en otros lugares.

<asp:Literal runat="server" id="Literal1" Text="Isn't &quot;it&quot; pretty?" /> 
+0

Esta es mi alternativa, por supuesto, pero prefiero mantener el texto estático en la parte frontal, no el código subyacente. – Jeff

+0

¿En serio en el voto a favor? – Mayo

+0

+1 ahora ha vuelto a una posición neutral: P –

4

puede utilizar dobles qoutes dentro de las comillas simples como esto:

<asp:Literal runat="server" id="Literal1" Text='This is my "text", isnt it pretty' /> 

Pero si desea utilizar en el texto de los dos, la mejor manera de hacerlo es en el código detrás

0

me gustaría sugerir string.format ...

...

Literal1.Text = string.format ("{0}", "Este es mi texto, ¿no es bonito?";

+2

Algunos problemas: 1. Esta pregunta tiene 2 años de antigüedad y tiene varias respuestas (incluida una respuesta aceptada), aunque no está mal contestar preguntas antiguas, esta fue una mala elección para responder tan tarde. 2. Esto tendría que hacerse en el código subyacente, no en la página ascx, que es una posibilidad que aborde en mi pregunta. 3. Su formateo es malo. 4. Dejó fuera un paréntesis de cierre. – Jeff

Cuestiones relacionadas