我需要使用'forumChild'类更改<div>
标记的CSS类。它必须改变foreach循环的每3个循环。
有没有办法在控件内执行此操作?
<div class="Forum">
<p>The Forum</p>
@foreach (var item in Model)
{
<div class="ForumChild">
<img src="@item.Blog.Image.img_path" alt="Not Found" />
<br />
@foreach (var comment in item.Blog.comment)
{
var db = new ACapture.Models.ACaptureDB();
var Name = from p in db.Profile.AsEnumerable()
where (p.AccountID == comment.AccountID)
select p;
<section>
<div>
<a href="@Url.Action("Index", "Home")">@foreach (var y in Name)
{ @(y.FirstName + " " + y.LastName + ":");
}</a>
</div>
<div>
@comment.Commentation
</div>
</section>
}
</div>
}
</div>
提前致谢
答案 0 :(得分:46)
@{
int counter=0;
}
@foreach (var item in Model)
{
counter++;
<div class="@(counter<=3 ? "classRed":"classBlue")">
<img src="@item.Blog.Image.img_path" alt="Not Found" />
//other markup also here
</div>
if (counter == 6)
{
counter = 0;
}
}
其中classRed
和classBlue
是CSS类
答案 1 :(得分:4)
我们如何处理这个问题:
1)你需要创建一个辅助方法,它将通过一些代码返回css类。
string GetDivClass(int code)
{
var classes = new [] {"first", "second", "third"};
return classes[code];
}
2)创建计数器/索引并在每次循环中递增它。
3)在 div 元素中调用GetDivClass(index % 3)
之类的辅助方法。
PS
它只是POC,所以不要在实际应用程序中使用它(你需要添加一个验证逻辑并将'classes'初始化移动到另一个地方)。
答案 2 :(得分:2)
你可以将你喜欢的任何代码写入Razor视图,所以为了做你想到的事情,你可以做这样的事情(我遗漏了大部分内部的东西):
@{
var className = "ForumChild";
}
<div>
@for (int i = 0; i < Model.Count; i++)
{
var item = Model[i];
if (i % 3 == 0)
className = GetNewClassName(); // Or whatever
<div class="@className">
</div>
}
</div>
答案 3 :(得分:-2)
您可以添加一个计数器变量,以1开头并循环递增。使用%检查if语句是否为true并更改类名
@{ int counter = 1;}
@foreach (var item in Model)
{
if( (counter % 3) ==0 )
{
<div class="ChangedName">
}
else
{
<div class="ForumChild">
}
i++;