2012-04-11 47 views
7

我有一个Asp.Net MVC 3网站,它将被本地化。ASP.Net MVC:使用新行的本地化文本?

我有几个RESX文件,其中包含我的文字,我在我的观点已经有些

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

但我做不到不会让它代表新的路线。

我想:

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

所以,我应该怎么做才能有一个新的生产线?

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

回答

10

说实话,我知道这是不是世界上最好的东西,但它的防呆,这意味着您的翻译没有把他们翻译的任何代码:根据答案

大厦已给予,你为什么不只是使用Html.Raw,但这样做,用Shift +在资源文件中输入结果更换\r\n,与一个<br />

之前,所以说,例如,你有一个名为Welcome字符串中的资源文件ApplicationMessage,你可以这样做:

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

这会给你你需要的。这里有一个类似的问题:

HTMLencode HTMLdecode

+0

嗯,也许我会帮助那个,不是吗? – J4N 2012-04-11 17:49:14

+0

是的好主意:) – mattytommo 2012-04-11 18:14:18

+0

它工作? :) – mattytommo 2012-04-16 21:34:53

0

你应该使用<br />Html.Raw()

2

渲染输出你可以把<br />对换行和使用@Html.Raw()方法,以示与断行,而不是<br />串的字符串。

-1

呀,感谢mattytommo。

您可以使用

First line <br /> second line 
资源

,或者

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

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

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

@Html.Raw(); 
1

我认为你应该使用Shift键的组合 + 输入CSS white-space property代替potentionally对外开放XSS漏洞,因为你会请使用@Html.Raw()解决方案。

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

我不知道具体情况,但它可能是你可能会发现,pre-wrap适合你的情况更好。 Read more about the different white-space properties here

+0

对不起,但因为问题是3年多以前,我无法测试你的解决方案;) – J4N 2015-09-03 09:35:01

+0

是的,我知道这是旧的(猜对你的问题找到了一个解决方案):)只是弄错了它,并希望为未来的读者打好基础;) – Squazz 2015-09-03 13:16:16