在.Net资源文件(App_GlobalResources)中的回车/换行

我在App_GlobalResources.resx文件中保留了几个文本。

文本必须是多行的,我需要让它们包含换行符。 但是,当我读取内容时,所有换行都不见了(打印\r\n ,而不是CRLF 10 13控制字符)。

我知道我可以通过在读取内容时将\r\n (或其他任何事情)重新replace为CRLF来解决这个问题,但是我想知道为什么这些明确的以文本为目标的resx文件忽略了控制字符 – 而CRLF是非常重要的 – 如果有人知道是否有一个设置或什么,可以使这个工作自然。

我用VB.NET Express Edition来testing这个。

在资源编辑器(您可以指定资源和string内容的名称)中,将string内容用Shift + Enter分隔。

让我们说你想input

 hello world 

input “hello”,然后按Shift + Enter和“world”。

如果查看Resources.Resx文件(这是一个xml文件),可以看到它创build了一个具有属性xml:space="preserve"的节点。

第二个选项

另外,您可以手动编辑Resources.resx并将其内容修改为CDATA部分。

假设你有一个名为“example”的string。 在Resources.resx中search它,并将其内容更改为具有CDATA部分,而不是具有简单的值。

例如

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

使用Shift + Enter插入一个新行。

当使用resxdevise器界面

  • 如果你真的把文本input到resx文件,那么你会使用

    Shift + Enter

    正如其他答案所指出的那样

  • 如果您在resx中粘贴文本,则Visual Studio将以与原来相同的格式(包括换行符/多行)粘贴文本。

以XML格式打开resx文件时

(使用查找和replacefindresx文件..当你从“查找结果”面板中单击文件时,VS将打开XML中的resx文件)

在这里你可以添加文本,只要你喜欢(在价值标签)和格式将被保留。

那么,在我的情况是什么工作是使用像这样的标签:

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

在这里有一个post更多的信息: 在resx资源文件中放置一个换行符

如果你碰巧在ASP.NET MVC中使用Razor视图引擎,你需要使用:

 @Html.Raw(ResourceFile.ResourceString) 

以便将它作为HTML打印。