0

对于一个有多个时间段的会议站点,我有一个简单的关系,并且我想在每个时间段中显示多个会话。

下面的代码可以正常工作,但是我不得不在外部代码块中使用 @Html.Raw("..") 。如果我只是尝试将原始 html (如ABCD放在第一个 @Html.Raw("") 的正上方),我会收到编译器错误。我对 razor 还是很陌生,只是不明白如何让我的生活更简单在嵌套的 foreach 中有真正的 html 代码,而不必将所有内容都包装在辅助方法中。

谢谢。

    @Html.Raw("<table id='myTable' border='1'>")

    @foreach (var sessionTime in Model.SessionsByTime)
    { 
        @Html.Raw("<tr>")
        @Html.Raw("<td>")
        @sessionTime.StartTimeFriendly
        @Html.Raw("</td>")
        @Html.Raw("<td></td>")
        @Html.Raw("</tr>")

        @Html.Raw("<table>")
            foreach (var session in sessionTime.sessionsResults)
            {
            <tr>
                <td width="300"></td>
                <td width="300">@session.Title</td>
            </tr>
            }
        @Html.Raw("</table>")
    }
4

1 回答 1

2

这应该看起来像这样

<table id='myTable' border='1'>
@foreach (var sessionTime in Model.SessionsByTime)
{ 
    <tr>
      <td>@sessionTime.StartTimeFriendly</td>
      <td></td>
    </tr>
    <table>
        @foreach (var session in sessionTime.sessionsResults)
        {
        <tr>
            <td width="300"></td>
            <td width="300">@session.Title</td>
        </tr>
        }
    </table>
}
</table>

如果您需要显示一些未包含在 html 标记中的文本,您需要使用@:

@foreach(var s in list) {
    @: hello there @s
    <text>this also work instead of @: and is usuful
    when you need more than one line
    </text>
}

如果您在代码块内而不是在 html 标记内,Razor 将假定您只是在编写代码,这就是为什么需要@:<text>需要

于 2013-01-23T23:07:11.820 回答