Razor 无法分析嵌套循环
本文关键字:嵌套循环 Razor | 更新日期: 2023-09-27 18:34:04
如果我向下走太多级别,剃刀解析器将无法处理我的代码。以下是我想要实现的目标:
@if (Model.comments.Count > 0)
{
<ul class="media-list">
@foreach (Comment comment in Model.comments)
{
<text>
<li class="media">
<a class="media-left">
<img data-src="holder.js/64x64" alt="64x64" src="" data-holder-rendered="true" style="width: 64px; height: 64px;">
</a>
<div class="media-body">
<p>@comment.content</p>
@foreach (Comment reply in comment.children)
{
<li class="media">
<a class="media-left">
<img data-src="holder.js/64x64" alt="64x64" src="" data-holder-rendered="true" style="width: 64px; height: 64px;">
</a>
<div class="media-body">
<p>@reply.content</p>
</div>
</li>
}
</div>
</li>
</text>
}
</ul>
}
但是,它会生成一系列关于缺少存在的结束标记(div 和 ul)的错误。如果我取出最里面的foreach循环,它可以正常工作:
@foreach (Comment reply in comment.children)
四处搜索我知道添加标签可以缓解问题,但我似乎也无法让它们工作。
编辑:谢谢,这是两者的结合。我在早期测试中留下了文本标签,并且一定在某个时候也删除了 ul 标签。删除文本标签并添加 ul 标签解决了这个问题。
在内部foreach
循环中,将<li>
元素包围在<ul>
标签中
....
<ul> // add this
@foreach (Comment reply in comment.children)
{
<li class="media">
<a class="media-left">
<img data-src="holder.js/64x64" alt="64x64" src="" data-holder-rendered="true" style="width: 64px; height: 64px;">
</a>
<div class="media-body">
<p>@reply.content</p>
</div>
</li>
}
</ul> // and this
您的问题可能出在<text>
标签上,该标签在Razor
中用于表示它不是代码。 你试过这个吗:
@if (Model.comments.Count > 0)
{
<ul class="media-list">
@foreach (Comment comment in Model.comments)
{
<text>
<li class="media">
<a class="media-left">
<img data-src="holder.js/64x64" alt="64x64" src="" data-holder-rendered="true" style="width: 64px; height: 64px;">
</a>
<div class="media-body">
</text>
<p>@comment.content</p>
@foreach (Comment reply in comment.children)
{
<li class="media">
<a class="media-left">
<img data-src="holder.js/64x64" alt="64x64" src="" data-holder-rendered="true" style="width: 64px; height: 64px;">
</a>
<div class="media-body">
<p>@reply.content</p>
</div>
</li>
}
<text>
</div>
</li>
</text>
}
</ul>
}
但我认为最好从您的 cshtml 中删除<text>
标签。