C# ASP.NETMVC:带有新行的本地化文本?
我有一个Asp.NETMVC3网站,它将被本地化 我有几个resx文件,其中包含我的文本,我在我的视图中有一些 @My.NameSpace.Through.My.LocalizationFile.Key 但我不能让它代表新的路线 我试过: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代码。
- 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>