Razor删除了资源文件中的新行,有没有办法保留它?

时间:2015-04-27 11:36:12

标签: c# asp.net-mvc razor

编辑:我添加了style =" white-space:pre-line"对于有问题的元素,这解决了我的问题。

我在资源文件中有一个字符串,如下所示:

Some text.

Some other text.

当我像这样使用它时:

<td>@(Tjuhu.App_GlobalResources.Wie.myLabel)</td>

我页面上的输出是

Some text. Some other text.

有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:3)

这不是剃须刀的问题,相反,这是您理解HTML呈现方式的问题。

您可以在<td>标记中添加样式属性以保留换行符。这将是最简单的方法。

<td style="white-space: pre-line">@(Tjuhu.App_GlobalResources.Wie.myLabel)</td>

或者,您需要通过方法运行文本值以替换换行符,并将其替换为<br>标记以保留格式。

答案 1 :(得分:2)

在资源文件中使用< br/>标记

资源文件myLable="Some string < br /> is here"

中的

在MVC View

@Html.Raw(Tjuhu.App_GlobalResources.Wie.myLabel)

答案 2 :(得分:1)

字符串中的换行符写入标记。您将能够在html源代码中看到它们。当然,换行符在HTML中没有语义含义,因此您无法在呈现的页面中看到它们。 ;)

您可以做的是写入视图 @Html.Raw(Tjuhu.App_GlobalResources.Wie.myLabel.Replace("\n", "<br>")

尽管为它编写HtmlHelper扩展方法更清晰。另请注意,HTML标记具有语义含义。 br用于句子中的换行符。因此,根据内容的不同,最好将分割字符串并将拆分部分放入p标记。

对于所有好的和正确的事物的热爱:不要将HTML直接放入资源字符串中!混合内容和具体标记回来咬你。或者甚至更糟的是反过来会咬你的人。