Ritorno a capo / avanzamento riga nel file di risorse .Net (App_GlobalResources)


94

Conservo diversi testi in un App_GlobalResources.resxfile.

I testi devono essere multilinea e ho bisogno che contengano line feed. Tuttavia, quando leggo il contenuto, tutti gli avanzamenti di riga sono spariti ( \r\nviene stampato, non come CRLF 10 13carattere di controllo).

So che potrei aggirare questo problema sostituendo \r\n(o qualsiasi altra cosa per quella materia) in CRLF quando ho letto il contenuto, ma mi chiedevo perché questi file resx chiaramente mirati al testo ignorano i caratteri di controllo - e CRLF è un po 'importante - e se qualcuno sa se c'è un ambiente o qualcosa che consentirebbe a questo di funzionare in modo naturale.

Risposte:


161

Ho usato VB.NET Express Edition per testarlo.

Nell'editor delle risorse (dove puoi specificare il nome della risorsa e il contenuto della stringa) metti il ​​contenuto della stringa separato da Shift+ Enter.

Diciamo che vuoi digitare

hello  
world

Digita "ciao" seguito da Shift+ Entere "mondo".

Se guardi il file Resources.Resx (che è un file xml), puoi vedere che crea un nodo con l'attributo xml:space="preserve".

2a opzione

Inoltre, è possibile modificare manualmente Resources.resx e modificare il contenuto in modo che si trovi nella sezione CDATA.

Supponiamo di avere la stringa denominata "esempio". Cercalo in Resources.resx e modifica il contenuto per avere una sezione CDATA al suo interno rispetto a un valore semplice.

per esempio

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>

3
Ho trovato questa risposta cercando un modo per inserire le \ttabulazioni. Ho dovuto effettivamente andare nelle impostazioni di Visual Studio per le schede nei file xml e disattivare l'opzione "tabulazioni come spazi" (dove invece sostituisce i caratteri di tabulazione con un numero di spazi) in modo da poter inserire un carattere di tabulazione letterale nella mia stringa.
Jon O

Fantastico ... non sapevo fosse possibile! :)
Leniel Maccaferri

Meglio tardi che mai ... Dopo aver supposto che \ n fosse il modo corretto. Solo 50 modifiche da apportare!
Andez

Mi ha salvato la giornata. Grazie!!
xyzWty

35

Usa Shift+ Enterper inserire una nuova riga.


4
chi l'avrebbe mai detto. provato ctrl + invio, alt + invio. consistenza MS!
Illuminati

18

Quando si utilizza l'interfaccia resx designer

  • Se stai effettivamente digitando il testo nel file resx, dovresti usare

    Shift+Enter

    come notato in altre risposte.

  • Se stai incollando del testo nel resx, Visual Studio incollerà il testo nello stesso formato in cui è già (comprese le interruzioni di riga / multilinea).

Quando si apre il file resx in formato XML

(individua il file resx usando trova e sostituisci .. quando fai clic sul file dal pannello 'trova risultati', VS aprirà il file resx in XML)

Qui puoi aggiungere il testo come preferisci (nei tag di valore) e la formattazione verrà preservata.


17

Bene, ciò che ha funzionato nella mia situazione è stato l'utilizzo di un <br>tag come questo:

A text with a line break <br> and this goes in the second line.

C'è un post con maggiori informazioni qui: Mettere un'interruzione di riga in un file di risorse resx

Se ti capita di utilizzare il motore di visualizzazione Razor con ASP.NET MVC devi utilizzare:

@Html.Raw(ResourceFile.ResourceString)

in modo che stampi il file <br>come HTML.


10
Ciò funzionerà se la stringa della risorsa è destinata all'uso come HTML. Ma se la stringa deve essere utilizzata in un modo non HTML (come la stringa per una descrizione comando o la finestra di dialogo di un messaggio di errore in un'app desktop, ad esempio), otterrai solo <br> nella stringa.
Peter Meyer

0

È possibile modificare il *.resxfile con un editor di testo per aggiungere interruzioni di riga.

Puoi farlo anche in Visual Studio:

  • Fare clic con il tasto destro sul file di risorse
  • Clicca su Open with ...
  • Selezionare XML (Text) Editor with Encoding
  • Clic OK
  • Fare OKnuovamente clic per selezionare la codifica (rilevamento automatico)
  • Cerca il nome (chiave) del tuo testo (ad es. "MY_TEXT")
  • Modifica il testo all'interno del <value>tag. Per le interruzioni di riga basta premere Enter. Nota: rimuovere gli spazi iniziali dopo l'interruzione di riga. Altrimenti vengono inseriti anche loro.

Testato con Visual Studio 2017.

Esempio:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.