razor - 具有不同行背景的 BsTable
问题描述
Bootstrap 4 提供了具有不同表格行背景颜色的能力。现在我正在我的 MVC 索引视图中检查一个条件并选择该行的背景。
@foreach (var item in Model)
{
@if(item.condition1)
{
<tr class="table-success">
<td></td>
</tr>
}
else if(item.condidtion2)
{
<tr class="table-warning">
<td></td>
</tr>
}
else
{
<tr class="table-danger">
<td></td>
</tr>
}
这没有问题,但从长远来看并不是很好。如果每一行都有很多元素,那么就会有很多重复的代码。如果条件越多,情况就会变得更糟。有没有更好的方法来避免重复代码?如果我想更改元素,我必须为每一行编辑或添加元素。代码冗余的常见问题。我试图为每个条件和之后只有一个没有结束标签的情况,但是这会产生编译器错误。
解决方案
tr
您可以在,x?y:z中使用三元条件运算符 (?:)。它的工作原理如下:
if(x)
{
return y;
}
else
{
return z;
}
这是一个演示:
public class Item
{
public bool Condition1 { get; set; }
public bool Condition2 { get; set; }
public bool Condition3 { get; set; }
}
控制器:
public IActionResult TestItem()
{
Item item1 = new Item { Condition1 = false, Condition2 = false, Condition3 = true };
Item item2 = new Item { Condition1 = false, Condition2 = true, Condition3 = false };
Item item3 = new Item { Condition1 = true, Condition2 = false, Condition3 = false };
Item item4 = new Item { Condition1 = false, Condition2 = false, Condition3 = false };
List<Item> l = new List<Item> { item1, item2, item3,item4 };
return View(l);
}
看法:
<table>
@foreach (var item in Model)
{
<tr @(item.Condition1 ? "class=table-success" : item.Condition2?"class=table-warning":item.Condition3?"class=table-danger":"")>
<td>TestItem</td>
</tr>
}
</table>
推荐阅读
- java - Smartcard verify pin apdu command problem in android
- java - SMS 集成在 Android 中是如何工作的?
- php - 寻找在jQuery中用多边形注释图像的解决方案
- javascript - 使用没有'split'功能的JS在单词上分割句子
- javafx - 为什么 CheckBoxTableCell 的 setSelectedStateCallback 的 lambda 等效项无法在 JavaFX8 中编译?
- java - 错误:尝试在空对象引用上调用虚拟方法“void android.widget.Filter.filter(java.lang.CharSequence)”
- algorithm - 找到最高塔的最小可能高度
- javascript - 在同一域但不同子域的多个 javascript 应用程序之间共享 Localstorage 令牌
- php - 显示来自 Woocommerce 购物车项目中自定义字段的自定义延期交货文本
- javascript - 带有共享案例的 Javascript switch 语句