【问题标题】:How do I use html and escape razor inside a razor foreach?如何在 razor foreach 中使用 html 和转义 razor?
【发布时间】:2013-11-18 23:32:58
【问题描述】:

如何在 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);
}

我需要这样的东西吗?

&lt;not razor&gt; tbody = '&lt;tr&gt;&lt;td&gt;' + @n + &lt;not razor&gt;'&lt;/td&gt;&lt;/tr&gt;';

【问题讨论】:

  • 也许我不能使用 foreach 而应该只使用 for?
  • 嗯,它不完全是 HTML,它是 javascript。所以在这里检查:stackoverflow.com/questions/4599169/… 对于纯 HTML,请看没有麻烦...

标签: c# html razor escaping


【解决方案1】:

你不能像这样混合使用 javascript 和 razor。 razor 在渲染页面时在服务器端进行处理,javascript 是客户端脚本。

您需要做的是呈现一段有效的 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);
}

【讨论】:

  • 我也在尝试同样的方法,我使用 切换回内容模式。我目前正在尝试修复一个错误,但我认为这是另一回事。顺便说一句,循环中n之前不需要@,所以我们使用来自razor的值吗?
  • @radbyx:是的,很好看。我已经更新了我的答案
  • 好的,我现在正在测试它。
  • 它工作哇!我不得不将string 更改为var,因为列表是IEnumerable,我必须将.Text 添加到n,但这是我的错误。 :)
【解决方案2】:

这就是你要找的吗? 我希望这会有所帮助

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

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

【讨论】:

  • 这也有效。当我第一次测试它时,我一定有另一个错误。
  • 我会接受你的,因为你先回答,而且少了两行。我不确定,这甚至可能是更好的做法。
猜你喜欢
  • 2017-12-18
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
相关资源
最近更新 更多