我正试图进入剃刀网页,并有这段代码,我不能弄清楚如何在剃刀成功。for循环正常工作,但是一旦我添加了if语句,它就中断了。
@{
List<Plant> plants = PlantTableAdapter.Get().Where(t => t.featured).ToList();
for (int i = 0; i < plants.Count; i++) {
if (i % 4 == 0) {
<div class="row">
}
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
@*if ((i + 1) % 4 == 0) {
</div>
}*@
}
}
似乎无论我尝试什么组合,它就是不起作用。我遇到了这个解决方案ASP。. NET MVC Razor - if在for中for在for中,但我认为因为for已经在代码块中,它破坏了它。
尝试使用@:
行标记转义if's中的html
@{
List<Plant> plants = PlantTableAdapter.Get().Where(t => t.featured).ToList();
for (int i = 0; i < plants.Count; i++)
{
if (i%4 == 0)
{
@:<div class="row">
}
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
<div class="col-sm-3"><a href="#"><img class="img-responsive" src="../Style/Images/demo1.jpg" alt="variety name" /><p>Variety Name</p></a></div>
if ((i + 1)%4 == 0)
{
@:</div>
}
}
}
razor的编码结构更可靠,更不容易出错。您在第一个"if"中放置了一个开始的div,并在第二个"if"中结束。如果第一个和第二个"if"在单次迭代中不为真怎么办?然后会有一个没有意义的额外的开始或结束