C# ASP.NETMVC:带有新行的本地化文本?

C# ASP.NETMVC:带有新行的本地化文本?,c#,asp.net-mvc,asp.net-mvc-3,razor,localization,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,Localization,我有一个Asp.NETMVC3网站,它将被本地化 我有几个resx文件,其中包含我的文本,我在我的视图中有一些 @My.NameSpace.Through.My.LocalizationFile.Key 但我不能让它代表新的路线 我试过: Shift+enter:我在资源文件中有新行,但在浏览器中没有 \r\n:我在浏览器中看到\r\n \n:一样 :我在文本中看到了 那么我该怎么做才能有一条新的生产线呢 编辑:我知道我可以使用Html.Raw,但我不能要求翻译人员在翻译中使用Html代码。

我有一个Asp.NETMVC3网站,它将被本地化

我有几个resx文件,其中包含我的文本,我在我的视图中有一些

@My.NameSpace.Through.My.LocalizationFile.Key

但我不能让它代表新的路线

我试过:

  • Shift+enter:我在资源文件中有新行,但在浏览器中没有
  • \r\n:我在浏览器中看到\r\n
  • \n:一样

  • :我在文本中看到了

那么我该怎么做才能有一条新的生产线呢


编辑:我知道我可以使用Html.Raw,但我不能要求翻译人员在翻译中使用Html代码。

您可能应该使用

并使用
Html.Raw()呈现输出。
您可以将

用于换行符,并使用
@Html.Raw()
方法,用换行符来显示字符串,而不是

字符串。

老实说,我知道这不是世界上最好的方法,但它很简单,这意味着您的翻译人员不必在翻译中添加任何代码:

在已经给出的答案的基础上,为什么不直接使用
Html.Raw
,但在这样做之前,将在资源文件中使用Shift+Enter产生的
\r\n
替换为

例如,假设您在资源文件
ApplicationMessage
中有一个名为
Welcome
的字符串,您可以执行以下操作:

@Html.Raw(ApplicationMessage.Welcome.Replace("\r\n", "<br />")
@Html.Raw(ApplicationMessage.Welcome.Replace(“\r\n”,“
”)
这会给你你所需要的。这里有一个类似的问题:


是的,多亏了Mattytomo

你可以用

First line <br /> second line

我认为您应该结合使用Shift+Enter和,而不是像使用
@Html.Raw()
解决方案那样潜在地打开XSS漏洞

<span style="white-space: pre-line">@My.NameSpace.Through.My.LocalizationFile.Key</span>
@My.NameSpace.Through.My.LocalizationFile.Key

我不知道具体的情况,但是你可能会发现,
pre-wrap
更适合你的情况。

哼哼,也许我会帮你,不是吗?这对我们来说很好。不是开发人员控制资源文件,所以能够应付(希望如此)大多数情况下,插入标记都很好。抱歉,因为这个问题是3年前提出的,所以我无法测试您的解决方案;)是的,我知道它很旧(我猜您已经找到了解决问题的方法):)只是对它进行了修改,并想为将来的读者提供帮助;)
@Html.Raw();
<span style="white-space: pre-line">@My.NameSpace.Through.My.LocalizationFile.Key</span>