Возврат каретки/подача строки в файле ресурсов .Net(App_GlobalResources)
Я сохраняю несколько текстов в файле App_GlobalResources.resx
.
Тексты должны быть многострочными, и мне нужно, чтобы они содержали фиды строк. Однако, когда я читаю содержимое, все фиды строк исчезают (\r\n
печатается, а не как CRLF 10 13
управляющий символ).
Я знаю, что я мог бы обойти это, повторно заменив \r\n
(или что-нибудь еще в этом случае) обратно на CRLF, когда я прочитал содержимое, но я задавался вопросом, почему эти явно текстовые файлы resx игнорируют контрольные символы - и CRLF важен - и если кто-нибудь знает, есть ли настройка или что-то, что позволит этому работать естественным образом.
Ответы
Ответ 1
Я использовал VB.NET Express Edition, чтобы проверить это.
В редакторе ресурсов (где вы можете указать имя ресурса и содержимого строки) поместите содержимое строки, разделенное Shift + Enter.
Предположим, вы хотите ввести
hello
world
Введите "привет", а затем Shift + Enter и "мир".
Если вы посмотрите на файл Resources.Resx(который представляет собой XML файл), вы увидите, что он создает node с атрибутом xml:space="preserve"
.
Вторая опция
Кроме того, вы можете вручную отредактировать Resource.resx и изменить содержимое, находящееся в разделе CDATA.
Предположим, что у вас есть строка с именем "example". Найдите его в Resource.resx и измените содержимое, чтобы иметь внутри него секцию CDATA против простого значения.
например.
<data name="example">
<![CDATA[
hello
world
1
2 3
4
]]> </data>
Ответ 2
Используйте Shift + Enter, чтобы вставить новую строку.
Ответ 3
При использовании интерфейса конструктора resx
-
Если вы на самом деле вводите текст в файл resx, вы должны использовать
Shift + Enter
как указано в других ответах.
-
Если вы вставляете текст в resx - Visual Studio будет вставлять текст в том же формате, в котором он уже есть (включая linebreaks/multiline).
При открытии файла resx в формате XML
(найдите файл resx, используя find и replace.., когда вы нажимаете файл на панели "найти результаты", VS откроет файл resx в XML)
Здесь вы можете добавить текст по своему усмотрению (в тегах значений), и форматирование будет сохранено.
Ответ 4
Хорошо, что работало в моей ситуации с использованием тега <br>
, как это:
A text with a line break <br> and this goes in the second line.
Здесь есть сообщение с дополнительной информацией: Включение разрыва строки в файле ресурсов resx
Если вы используете механизм просмотра Razor с ASP.NET MVC, вам нужно использовать:
@Html.Raw(ResourceFile.ResourceString)
чтобы он печатал <br>
как HTML.
Ответ 5
Можно редактировать *.resx
с помощью текстового редактора, чтобы добавить переносы строк.
Вы можете сделать это даже в Visual Studio:
- Щелкните правой кнопкой мыши файл ресурса
- Нажмите, чтобы
Open with...
- Выберите
XML (Text) Editor with Encoding
- Нажмите
OK
- Нажмите
OK
раз для выбора кодировки (автоопределение) - Найдите имя (ключ) вашего текста (например, "MY_TEXT")
- Отредактируйте текст внутри
<value>
. Для перевода строки просто нажмите Enter
. Примечание. Удалите начальные пробелы после переноса строки. Иначе они тоже вставляются.
Протестировано с Visual Studio 2017.
Пример:
<data name="MY_TEXT" xml:space="preserve">
<value>Line 1
Line 2
Line 3</value>
</data>