web-dev-qa-db-fra.com

Retour chariot/saut de ligne dans un fichier de ressources .Net (App_GlobalResources)

Je garde plusieurs textes dans un fichier App_GlobalResources.resx

Les textes doivent être multilignes et je dois leur faire contenir des sauts de ligne. Cependant, lorsque je lis le contenu, tous les sauts de ligne ont disparu (\r\n est imprimé et non sous le caractère de contrôle CRLF 10 13).

Je sais que je pourrais contourner ce problème en remplaçant \r\n (ou toute autre chose) par CRLF lorsque je lisais le contenu, mais je me demandais pourquoi ces fichiers resx clairement ciblés par le texte ignorent les caractères de contrôle - et CRLF est un peu important - et si quelqu'un sait s'il existe un paramètre ou quelque chose qui permettrait à cela de fonctionner naturellement.

85
Alex

J'ai utilisé VB.NET Express Edition pour tester cela.

Dans l'éditeur de ressources (où vous pouvez spécifier le nom de la ressource et le contenu de la chaîne), placez le contenu de la chaîne séparé par Shift+Enter.

Disons que vous voulez taper

hello  
world

Tapez "bonjour" suivi de Shift+Enter et "monde".

Si vous examinez le fichier Resources.Resx (qui est un fichier xml), vous pouvez voir qu'il crée un nœud avec l'attribut xml:space="preserve".

2ème option

En outre, vous pouvez modifier le fichier Resources.resx manuellement et modifier le contenu afin qu'il soit dans la section CDATA.

Supposons que vous ayez la chaîne nommée "exemple". Recherchez-le dans Resources.resx et modifiez le contenu pour qu'il contienne une section CDATA, par opposition à une valeur simple.

par exemple.

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

Utilisation Shift+Enter insérer une nouvelle ligne.

31
KingP

Lors de l'utilisation de l'interface du concepteur resx

  • Si vous tapez réellement le texte dans le fichier resx, vous utiliserez

    Shift+Enter

    comme indiqué dans d'autres réponses.

  • Si vous collez du texte dans le resx - Visual Studio le colle dans le même format qu’il est déjà (y compris les sauts de ligne et les multilignes).

Lors de l'ouverture du fichier resx au format XML

(localisez le fichier resx à l'aide de find and replace .. lorsque vous cliquez sur le fichier dans le panneau "find results", VS ouvre le fichier resx en XML)

Ici, vous pouvez ajouter du texte à votre guise (dans les balises value) et la mise en forme sera préservée.

16
Danield

Eh bien, dans ma situation, l’utilisation d’une balise <br> comme celle-ci a fonctionné:

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

Il y a un article avec plus d'informations ici: Ajout d'un saut de ligne dans un fichier de ressources resx

Si vous utilisez le moteur de vue Razor avec ASP.NET MVC, vous devez utiliser:

@Html.Raw(ResourceFile.ResourceString)

afin qu'il imprime le <br> au format HTML.

11
Leniel Maccaferri

Il est possible de modifier le fichier *.resx avec un éditeur de texte pour ajouter des sauts de ligne. 

Vous pouvez le faire même dans Visual Studio:

  • Clic droit sur le fichier de ressources
  • Cliquez pour Open with ...
  • Sélectionnez XML (Text) Editor with Encoding
  • Cliquez sur OK
  • Cliquez à nouveau sur OK pour sélectionner l'encodage (détection automatique).
  • Recherchez le nom (clé) de votre texte (par exemple, "MY_TEXT").
  • Editez le texte à l'intérieur de la balise <value>. Pour les sauts de ligne, appuyez simplement sur Enter. Remarque: Supprimez les espaces de début après le saut de ligne. Sinon, ils sont également insérés.

Testé avec Visual Studio 2017.

Exemple:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
0
Beauty