在Razor视图中有条件地更改CSS类
我需要使用’forumChild’类更改
标记的CSS类。 它必须改变foreach循环的每3个循环。
有没有办法在控件内执行此操作?
The Forum
@foreach (var item in Model) {
@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; @comment.Commentation } }
提前致谢
@{ int counter=0; } @foreach (var item in Model) { counter++; //other markup also here if (counter == 6) { counter = 0; } }
classRed
和classBlue
是CSS类
我们如何处理这个问题:
1)你需要创建一个辅助方法,它将通过一些代码返回css类。
string GetDivClass(int code) { var classes = new [] {"first", "second", "third"}; return classes[code]; }
2)创建计数器/索引并在每次循环中递增它。
3)在div元素处调用GetDivClass(index % 3)
等辅助方法。
PS
它只是POC,所以不要在实际应用程序中使用它(您需要添加validation逻辑并将’类’初始化移动到另一个地方)。
您可以将任何您喜欢的代码写入Razor视图,这样做你想要做的事情,你可以做这样的事情(我遗漏了大部分内部的东西):
@{ var className = "ForumChild"; } @for (int i = 0; i < Model.Count; i++) { var item = Model[i]; if (i % 3 == 0) className = GetNewClassName(); // Or whatever }
您可以添加一个计数器变量,以1开头并循环递增。 使用%检查if语句是否为true并更改类名
@{ int counter = 1;} @foreach (var item in Model) { if( (counter % 3) ==0 ) { } else { } i++;
Interesting Posts