在我们的数据库中,管理员决定h.postDelayed(new Runnable() {
public void run() {
timePassed++;
timeLeft = (maxTime - timePassed) / 10;
timeLeftStr = "Time left: " + timeLeft + " seconds";
timer.setText(timeLeftStr);
if (timeLeft <= 0) {
started = false;
h.removeCallbacksAndMessages(null);
setupGameOver(restartBtn, header1, header2, timer);
} else {
// run again.
h.postDelayed(this, 100);
}
}
}, 100);
代表换行符。
似乎很简单。
现在MVC,我有这个领域:
{
我不知道该放什么<fieldset class="my-fieldset">
<legend>Whatever</legend>
<p> @StringVariable.Replace("{", "???") </p>
</fieldset>
这些是我的尝试:
???
它选择了换行......
也许我应该在@之后放一些可以使事情有用的东西?
答案 0 :(得分:2)
首先使用Html.Encode()
对字符串进行编码,以避免潜在的html语法。然后使用<br/>
标记替换占位符。然后使用Html.Raw()
输出字符串,以便不再应用html转义:
<fieldset class="my-fieldset">
<legend>Whatever</legend>
<p> @Html.Raw(Html.Encode(StringVariable).Replace("{", "<br/>")) </p>
</fieldset>
如果您需要在多个地方使用此功能,请编写自己的HTML帮助程序扩展方法,如下所示:
public static class HTMLExtensions
{
public static IHtmlString ApplyNewLineReplacing(this HtmlHelper html, string text)
{
text = html.Encode(text);
text = text.Replace("{", "<br/>");
return html.Raw(text);
}
}
然后你可以在你的视图中使用它:
<fieldset class="my-fieldset">
<legend>Whatever</legend>
<p> @Html.ApplyNewLineReplacing(StringVariable) </p>
</fieldset>
答案 1 :(得分:1)
我认为您正在寻找的是:
<p>@StringVariable.Replace("{", System.Environment.NewLine)</p>
希望这会有所帮助:)
答案 2 :(得分:1)
嗯,首先我们需要明确“linebreak”的含义。您想要HTML源代码中的换行符还是渲染文档中的换行符?解析HTML时,除非包含在pre
标记内或以其他方式设置为“预格式化文本”,否则将忽略空格。因此,无论如何,在浏览器的渲染中都会忽略在<p>
标记之类的源中添加换行符。唯一会导致实际呈现换行符的是<br />
标记。所以,最有可能的是,你正在寻找的是:
<p>@StringVariable.Replace("{", "<br />")</p>
但是,Razor会自动对HTML字符串数据进行编码以确保安全。如果您希望在被视为HTML的字符串中实际使用HTML,则需要使用Html.Raw
包装它:
<p>@Html.Raw(StringVariable.Replace("{", "<br />"))</p>