当两个元素为真时,我想div
在循环中显示一个 HTML 标记。for
因此,我必须div
像这样显示开始:
*.chtml below
Html.Raw("<div class=\"additional-options clearfix\" style=\"display: block;\">");
并在其他元素为真时显示结束标记。
结果是 div 没有以 HTML 格式打印出来
还有其他解决方案吗?
当两个元素为真时,我想div
在循环中显示一个 HTML 标记。for
因此,我必须div
像这样显示开始:
*.chtml below
Html.Raw("<div class=\"additional-options clearfix\" style=\"display: block;\">");
并在其他元素为真时显示结束标记。
结果是 div 没有以 HTML 格式打印出来
还有其他解决方案吗?
由于您使用的是 Razor,因此您应该能够直接编写 HTML,如下所示:
<body>
<span>This is some normal HTML</span>
@{
Boolean fork = true;
Int32[] numbers = new Int32[] {1,2,3,4,5,6};
if(fork)
{
<div>If fork is true, this will display</div>
foreach(Int32 number in numbers)
{
<span>@number</span>
<span>@HttpUtility.HtmlDecode("<Tag>This is a nonsense tag </Tag>")</span>
}
}
else
{
<div>If fork is false, this will display</div>
}
}
<span>This is more normal HTML</span>
</body>
只需确保使用@{ }
从 HTML 转义为代码(或在某些情况下再次转义)。
此外,如果您需要打印出没有结束标记的纯文本或 html 标记,则需要使用 @: 构造。例如:
<div>
@if (Model.IsTrue)
{
@:Statement is true.
@:<img src="/Images/cool.jpg" alt="" />
} else {
<span>Statement is not true.</span>
}
</div>
请注意我需要如何使用 @: 来退出 C# 代码并进入 HTML 模式。但是,当我有一个带有打开关闭标签的 HTML 元素时,就不需要使用转义字符了。