8

我有一个将本地化的 Asp.Net MVC 3 网站。

我有几个包含我的文本的 resx 文件,我认为有些

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

但我不能让它代表新线。

我试过:

  • Shift+enter:我在资源文件中有新行,但在我的浏览器中没有
  • \r\n :我在浏览器中看到了 \r\n
  • \n : 相同
  • <br/>: 我<br/>在我的文字中看到

那么我应该怎么做才能有一条新线呢?

编辑:我知道我可以使用 Html.Raw,但我不能要求翻译人员将 html 代码放入他们的翻译中。

4

5 回答 5

10

老实说,我知道这不是世界上最好的东西,但它是万无一失的,这意味着您的翻译人员不必在翻译中添加任何代码:

在已经给出的答案的基础上,您为什么不直接使用Html.Raw,但在这样做之前,\r\n在资源文件中使用 Shift+Enter替换会导致<br />

例如,假设您Welcome在资源文件中命名了字符串ApplicationMessage,您可以这样做:

@Html.Raw(ApplicationMessage.Welcome.Replace("\r\n", "<br />")

这会给你你所需要的。这是一个类似的问题:

HTMLencode HTMLdecode

于 2012-04-11T15:02:39.380 回答
2

您可以将<br />for 换行符并使用该@Html.Raw()方法显示带有换行符的字符串而不是<br />字符串。

于 2012-04-11T14:14:08.507 回答
2

我认为您应该使用Shift+EnterCSS white-space 属性的组合,而不是像使用解决方案那样故意打开 XSS 漏洞@Html.Raw()

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

我不知道具体情况,但您可能会发现pre-wrap更适合您的情况。在此处阅读有关不同空白属性的更多信息

于 2015-09-03T07:26:18.360 回答
0

您可能应该使用<br />并渲染输出Html.Raw()

于 2012-04-11T14:10:36.530 回答
-1

是的,多亏了mattytommo。

您可以使用

First line <br /> second line

在资源中,或

resource.Replace("\r\n", "<br />")

在代码中和 Shift + Enter 在资源编辑器中。

两者都工作正常,但你必须使用

@Html.Raw();
于 2014-02-11T01:18:45.353 回答