如何在
Environment.NewLine
内传递 < br />
(或 ViewData["msg"]
)
在视图本身内部呈现为真实的<br />
?
我正在使用 C# ...
您可以简单地使用
HttpUtility.HtmlEncode("<br />");
请查看这里了解更多详情。
编辑:
很抱歉,我一开始没明白这个问题。我以为你想对传递的字符串进行编码。有时我读问题的速度太快:)
无论如何,要完全回答您的问题,请查看这些示例。假设在你的行动中你有:
[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 上的此问题。
再见!
你尝试过吗 或者 在 ViewData 字符串本身内部?
使用这个:
TempData["MsgString"] = MvcHtmlString.Create("No Data" + "<br />" + "For Something");
或者,使用变量:
TempData["MsgString"] = MvcHtmlString.Create(Strings.StrNoData + "<br />" + Strings.StrSomething);
这对我有用:
TempData["MsgString"] = "something i wrote <br> myself"
视图中:
<p>@Html.Raw(TempData["MsgString"])</p>