在 ViewData["msg"] 中传递 NewLine(或 <Br />)

问题描述 投票:0回答:4

如何在

Environment.NewLine
内传递
< br />
(或
ViewData["msg"]
) 在视图本身内部呈现为真实的
<br />

我正在使用 C# ...

asp.net-mvc newline viewdata
4个回答
10
投票

您可以简单地使用

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 上的此问题

再见!


0
投票

你尝试过吗 或者 在 ViewData 字符串本身内部?


0
投票

使用这个:

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

或者,使用变量:

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

0
投票

这对我有用:

TempData["MsgString"] = "something i wrote <br> myself"

视图中:

<p>@Html.Raw(TempData["MsgString"])</p>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.