如何在razor foreach中使用html和escape razor?

时间:2013-11-07 10:48:59

标签: c# html razor escaping

如何在razor foreach中构建我的html?我在foreach中得到“无法解决tbody”。

我的代码:

function loadNyhedsbrevTable() {
    var tbody = "";

    $('#NyhedsbrevTable tbody').empty();
    @foreach (string n in ViewBag.NyhedsbrevListe)
    { 
        tbody = '<tr><td>' + n + '</td></tr>';
    }
    $('#NyhedsbrevTable tbody').append(tbody);
}

我需要这样的东西吗?

<not razor> tbody = '<tr><td>' + @n + <not razor>'</td></tr>';

2 个答案:

答案 0 :(得分:5)

这是你在找什么? 我希望这有帮助

@foreach (string n in ViewBag.NyhedsbrevListe)
{ 
    @:tbody = '<tr><td>' + n + '</td></tr>';
}

来源: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

答案 1 :(得分:2)

你不能混合使用javascript和razor。 razor在渲染页面时获得处理服务器端,javascript是客户端srcipt。

您需要做的是渲染一段有效的JavaScript代码。假设你想为循环中的每个项追加一行,那么这样的东西应该有效:

function loadNyhedsbrevTable() {
    var tbody = "";

    $('#NyhedsbrevTable tbody').empty();

    @foreach (string n in ViewBag.NyhedsbrevListe)
    { 
        <text>
            tbody += '<tr><td>@(n)</td></tr>';
        </text>
    }

    $('#NyhedsbrevTable tbody').append(tbody);
}

这将导致以下渲染输出,例如:

function loadNyhedsbrevTable() {
    var tbody = "";

    $('#NyhedsbrevTable tbody').empty();

    tbody += '<tr><td>one</td></tr>';
    tbody += '<tr><td>two</td></tr>';
    tbody += '<tr><td>three</td></tr>';

    $('#NyhedsbrevTable tbody').append(tbody);
}