C# 在Razor视图中有条件地更改CSS类
我需要将C# 在Razor视图中有条件地更改CSS类,c#,css,asp.net-mvc-3,razor,C#,Css,Asp.net Mvc 3,Razor,我需要将标记的CSS类更改为'forumChild'类。它必须更改foreach循环的每3个循环 有没有办法在控制范围内做到这一点 <div class="Forum"> <p>The Forum</p> @foreach (var item in Model) { <div class="ForumChild">
标记的CSS类更改为'forumChild'类。它必须更改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>
论坛
@foreach(模型中的var项目)
{
@foreach(item.Blog.comment中的var注释)
{
var db=new ACapture.Models.ACaptureDB();
var Name=来自db.Profile.AsEnumerable()中的p
其中(p.AccountID==comment.AccountID)
选择p;
@评论,评论
}
}
提前感谢我们如何处理此问题: 1) 您需要创建助手方法,该方法将通过一些代码返回css类
string GetDivClass(int code)
{
var classes = new [] {"first", "second", "third"};
return classes[code];
}
2) 创建计数器/索引并每次在循环中递增
3) 在div元素处调用助手方法,如GetDivClass(索引%3)
PS
它只是POC,所以不要在实际应用程序中使用它(你需要添加一个验证逻辑并将“类”初始化移动到另一个地方)。你可以在Razor视图中编写任何你喜欢的代码,所以要想做你想做的事情,你可以这样做(我省略了大部分内部内容):
@{
var className=“ForumChild”;
}
@for(int i=0;i
您可以添加一个计数器变量,使其以1开头,并在循环中递增。按%检查语句是否为true,并更改类名
@{ int counter = 1;}
@foreach (var item in Model)
{
if( (counter % 3) ==0 )
{
<div class="ChangedName">
}
else
{
<div class="ForumChild">
}
i++;
@{int counter=1;}
@foreach(模型中的var项目)
{
如果((计数器%3)=0)
{
}
其他的
{
}
i++;
@{
int计数器=0;
}
@foreach(模型中的var项目)
{
计数器++;
//这里还有其他标记
如果(计数器==6)
{
计数器=0;
}
}
在您的示例中,
classRed
和classBlue
是CSS类,最好在函数内部执行模运算。这样,调用者就不需要知道它有多少项,将来也可以在不破坏现有代码的情况下添加更多项。这句话很好,但很难取消了解此方法实际返回的布局。也许最好向该方法添加某种css类组名(GetDivClass(字符串CSSClasseGroup,int-code))。这在razor中不受支持,因为它会抱怨标记不匹配。如果我有多个Cals(2除外),我可以在这里做什么?对于任何访问此旧问题的人。CSS可以处理第n个子类。请看,您不再需要编写条件第n个循环
@{ int counter = 1;}
@foreach (var item in Model)
{
if( (counter % 3) ==0 )
{
<div class="ChangedName">
}
else
{
<div class="ForumChild">
}
i++;
@{
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;
}
}