如何在Environment.NewLine
内传递< br />
(或ViewData["msg"]
)
在View本身内呈现真实的<br />
?
我正在使用C#...
答案 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);