Vận chuyển trở lại / Nguồn cấp dữ liệu dòng trong Tệp tài nguyên .Net (App_GlobalResources)


94

Tôi đang giữ một số văn bản trong một App_GlobalResources.resxtệp.

Các văn bản phải có nhiều dòng và tôi cần để chúng chứa nguồn cấp dòng. Tuy nhiên, khi tôi đọc nội dung, tất cả các nguồn cấp dòng đều biến mất ( \r\nđược in, không phải là CRLF 10 13ký tự điều khiển).

Tôi biết rằng tôi có thể giải quyết vấn đề này bằng cách thay thế lại \r\n(hoặc bất kỳ thứ gì khác cho vấn đề đó) trở lại CRLF khi tôi đọc nội dung, nhưng tôi tự hỏi tại sao các tệp resx được nhắm mục tiêu văn bản rõ ràng này lại bỏ qua các ký tự điều khiển - và CRLF là loại quan trọng - và nếu ai đó biết liệu có một cài đặt hoặc thứ gì đó có thể cho phép điều này hoạt động tự nhiên hay không.

Câu trả lời:


159

Tôi đã sử dụng VB.NET Express Edition để kiểm tra điều này.

Trong trình chỉnh sửa tài nguyên (nơi bạn có thể chỉ định tên của tài nguyên và nội dung chuỗi) đặt nội dung chuỗi được phân tách bằng Shift+ Enter.

Giả sử bạn muốn nhập

hello  
world

Nhập "xin chào" theo sau là Shift+ Entervà "thế giới".

Nếu bạn nhìn vào tệp Resources.Resx (là tệp xml), bạn có thể thấy rằng nó tạo một nút với thuộc tính xml:space="preserve".

Lựa chọn thứ 2

Ngoài ra, bạn có thể chỉnh sửa Resources.resx theo cách thủ công và sửa đổi nội dung trong phần CDATA.

Giả sử rằng bạn có chuỗi có tên "ví dụ". Tìm kiếm nó trong Resources.resx và thay đổi nội dung để có phần CDATA bên trong nó thay vì có một giá trị đơn giản.

ví dụ

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

3
Tôi tìm thấy câu trả lời này đang tìm cách để chèn \tcác tab. Tôi đã thực sự phải đi vào cài đặt của visual studio cho các tab trong tệp xml và tắt tùy chọn "tab dưới dạng dấu cách" (trong đó nó thay thế các ký tự tab bằng một số dấu cách) để tôi có thể lấy một ký tự tab theo nghĩa đen vào chuỗi của mình.
Jon O,

Tuyệt vời ... không biết là có thể! :)
Leniel Maccaferri

Muộn còn hơn không ... Sau khi tôi đã cho rằng \ n là cách chính xác. Chỉ có 50 thay đổi để thực hiện!
Andez

Đã lưu ngày của tôi. Cảm ơn bạn!!
xyzWty,

35

Sử dụng Shift+ Enterđể chèn một dòng mới.


4
ai có thể đoán được. đã thử ctrl + enter, alt + enter. nhất quán MS!
Illuminati

18

Khi sử dụng giao diện trình thiết kế resx

  • Nếu bạn thực sự đang nhập văn bản vào tệp resx thì bạn sẽ sử dụng

    Shift+Enter

    như đã lưu ý trong các câu trả lời khác.

  • Nếu bạn đang dán văn bản trong resx - Visual Studio sẽ dán văn bản ở định dạng giống như nó đã có (bao gồm dấu ngắt dòng / nhiều dòng).

Khi mở tệp resx ở định dạng XML

(tìm tệp resx bằng cách sử dụng tìm và thay thế .. khi bạn nhấp vào tệp từ bảng 'tìm kết quả', VS sẽ mở tệp resx bằng XML)

Tại đây bạn có thể thêm văn bản tùy thích (trong thẻ giá trị) và định dạng sẽ được giữ nguyên.


17

Chà, những gì hiệu quả trong tình huống của tôi là sử dụng một <br>thẻ như thế này:

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

Có một bài đăng với nhiều thông tin hơn ở đây: Đặt dấu ngắt dòng trong tệp tài nguyên resx

Nếu bạn đang sử dụng công cụ xem Razor với ASP.NET MVC, bạn cần sử dụng:

@Html.Raw(ResourceFile.ResourceString)

để nó in <br>dưới dạng HTML.


10
Điều này sẽ hoạt động nếu chuỗi tài nguyên của bạn được sử dụng dưới dạng HTML. Nhưng nếu chuỗi được sử dụng theo cách không phải HTML (ví dụ như chuỗi cho chú giải công cụ hoặc hộp thoại thông báo lỗi trong ứng dụng dành cho máy tính để bàn), bạn sẽ chỉ nhận được <br> trong chuỗi của mình.
Peter Meyer

0

Có thể chỉnh sửa *.resxtệp bằng trình soạn thảo văn bản để thêm dấu ngắt dòng.

Bạn có thể làm điều đó ngay cả trong Visual Studio:

  • Nhấp chuột phải vào tệp tài nguyên
  • Bấm vào để Open with ...
  • Lựa chọn XML (Text) Editor with Encoding
  • Nhấp chuột OK
  • Nhấp OKlại để chọn mã hóa (tự động phát hiện)
  • Tìm kiếm tên (khóa) văn bản của bạn (ví dụ: "MY_TEXT")
  • Chỉnh sửa văn bản bên trong <value>thẻ. Đối với dấu ngắt dòng, chỉ cần đẩy Enter. Lưu ý: Loại bỏ các khoảng trắng ở đầu sau dấu ngắt dòng. Nếu không, chúng cũng được chèn vào.

Đã thử nghiệm với Visual Studio 2017.

Thí dụ:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.