0

当两个元素为真时,我想div在循环中显示一个 HTML 标记。for因此,我必须div像这样显示开始:

*.chtml below
Html.Raw("<div class=\"additional-options clearfix\" style=\"display: block;\">");  

并在其他元素为真时显示结束标记。

结果是 div 没有以 HTML 格式打印出来

还有其他解决方案吗?

4

2 回答 2

2

由于您使用的是 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 转义为代码(或在某些情况下再次转义)。

于 2013-05-16T18:21:26.040 回答
1

此外,如果您需要打印出没有结束标记的纯文本或 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 元素时,就不需要使用转义字符了。

于 2013-05-16T19:32:30.170 回答