在ViewData [“msg”]中传递NewLine(或<br/>)

时间:2010-11-24 23:09:48

标签: asp.net-mvc newline viewdata

如何在Environment.NewLine内传递< br />(或ViewData["msg"]) 在View本身内呈现真实的<br />

我正在使用C#...

3 个答案:

答案 0 :(得分:9)

您只需使用

即可
HttpUtility.HtmlEncode("<br />");

look here了解更多详情。

编辑

我很抱歉,但我一开始并不理解这个问题。我以为你想编码传递的字符串。有时我读的问题太快了:))

无论如何要完全回答你的问题,看看这些样本。假设您的行动中有:

[HttpGet]
public virtual ActionResult Index() {
    ViewData["Message"] = "This is a test." + "<br />" + "Does it work?";
    return View();
}

在你看来,你有

<p>Sample 1: <br /><%= ViewData["Message"]%></p>
<p>Sample 2: <br /><%: ViewData["Message"]%></p>

注意两个构造之间的区别。您将获得以下结果:

Sample 1: 
This is a test.
Does it work?

Sample 2: 
This is a test.<br />Does it work?

所以第一个样本用法回答了你的问题。关键是不要编码字符串,而不是我在开始时理解的。第二个构造,即使用<%: %>的构造,如果您使用的是.NET 4.0,会自动对它渲染的每个字符串进行编码。

如果你仍然想使用这个最新的构造并避免字符串被编码,你必须使用技巧。只需告诉构造该字符串已经编码,并且不需要重新编码。要实现此目的,请使用此示例代码

[HttpGet]
public virtual ActionResult Index() {
    ViewData["Message2"] = MvcHtmlString.Create( "This is a test." + "<br />" + "Does it work?" );
    return View();
}

并且在视图中通常使用<%: %>构造

<p>Sample 3: <br /><%: ViewData["Message2"]%></p>

有关使用MvcHtmlString以及它如何工作的更多详细信息,请参阅SO上的question

侨!

答案 1 :(得分:0)

您是否在ViewData字符串本身内尝试了\ n或\ r?

答案 2 :(得分:0)

使用此:

TempData["MsgString"] = MvcHtmlString.Create("No Data" + "<br />" + "For Something");

或者,带有变量:

TempData["MsgString"] = MvcHtmlString.Create(Strings.StrNoData + "<br />" + Strings.StrSomething);