2009-09-04 13 views
15

Proste pytanie, wiem, ale nie mogę znaleźć sposobu na umieszczenie zarówno pojedynczych, jak i podwójnych cudzysłowów w ciągu znaków właściwości tekstowej Dosłowne w asp.netASP.NET: pojedyncze i podwójne cudzysłowy we właściwościach tekstowych literału

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

Na przykład w powyższym fragmencie kodu. Ciąg zamyka się przy pierwszym podwójnym cudzysłowie wokół "tekstu". Wiem, że mógłbym je zastąpić pojedynczymi cudzysłowami (lub użyć wszystkich podwójnych cudzysłowów i zawijać ciąg w pojedyncze cudzysłowy), ale nie jestem pewien, jak używać obu. Wydostawanie się z cytatów nie działa.

Ustawienie ciągu znaków z tyłu kodu jest opcjonalną opcją, w której można uciec z podwójnych cytatów, ale zawsze uważałem, że najlepiej jest zachować tekst statyczny na aspx, zamiast zaśmiecać kod-za .

Odpowiedz

27

Można spróbować enitity HTML dla cudzysłowem: &quot;

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

Tak, pliki ASP.NET Web Forms są w zasadzie plikami XML i mają do nich zastosowanie normalne reguły XML. W takim przypadku do uniknięcia znaku cudzysłowu używasz standardowych elementów XML. W powiązanej notatce: aby uciec przed znakiem ampersand ('&'), użyłbyś '&'. – Blixt

+0

* facepalm * Jestem idiotą. Używam tych WSZYSTKICH CZASÓW. Pewnego ranka musiałem mieć moje głupie płatki i zapomniałem o nich. – Jeff

+0

To jest właśnie to, co MS woli, ponieważ jeśli użyjesz sugerowanej przez IP techniki i uruchomisz "Generate Local Resource" (która formatuje tekst), spowoduje to to na stronie. – Jeff

6

Można użyć:

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

ten powinien pracować dla Ciebie

+0

Czy tekst ustawiony w ten sposób jest odbierany przez wbudowane narzędzia do globalizacji? – Jeff

+1

Brakuje identyfikatora, ale podoba mi się to najlepiej. +1 – tvanfosson

+0

Niestety tak, często zostawiam to ID, jeśli wiem, że nigdy nie będę potrzebować dostępu do niego z kodu z tyłu, wtedy nie otrzymasz ogromnego identyfikatora w wygenerowanym kodzie. – Paul

1

Proponuję znaków ewakuacyjnych, ale Nie jestem świadomy sposobu korzystania z tych wbudowanych. Zamiast tego użyj kodu do zainicjowania wartości.

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

... 

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

Można również użyć kodowania HTML zgodnie z sugestią w innym miejscu.

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

To jest oczywiście moja odpowiedź, ale wolę zachować tekst statyczny na pierwszej stronie, a nie na kodowanie. – Jeff

+0

Poważnie w sprawie? – Mayo

+0

+1 teraz powracasz do pozycji neutralnej: P –

4

można użyć podwójnych qoutes wewnątrz apostrofami tak:

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

Ale jeśli chcesz używać w tekście oboje, najlepszym sposobem na to jest w kodzie za

0

chciałbym sugerować String.Format ...

...

Literal1.Text = string.format ("{0}", "To jest mój tekst, czy to nie jest piękne?";

+2

Kilka problemów: 1. To pytanie ma 2 lata i zawiera kilka odpowiedzi (w tym akceptowaną odpowiedź), podczas gdy odpowiedź na stare pytania jest nienajlepsza, to był zły wybór, aby odpowiedzieć tak późno. 2. Musiałoby to być zrobione na podstawie kodu źródłowego, a nie strony ascx, co jest możliwością, o której mowa w moim pytaniu. 3. Twoje formatowanie jest złe. 4. Pominąłeś nawias zamykający. – Jeff

Powiązane problemy