如何在ViewData列表绑定的数据表中排除count为0的空数据行
实现方法
你只需要在遍历每个列表前增加非空、数据量校验,只有当对应列表存在且包含数据时,才执行循环渲染逻辑,空列表时直接跳过对应代码块,就不会生成tbody里对应的行,同时还能避免ViewData取值时的空引用报错。
修改后的视图代码如下:
<tbody> @{ // 安全获取第一个列表做校验 var sample1List = ViewData["Sample1"] as List<Sample1>; if (sample1List != null && sample1List.Count > 0) { foreach(var item in sample1List) { <tr> <td>@item.A</td> <td>@item.B</td> </tr> } } } @{ // 安全获取第二个列表做校验 var sample2List = ViewData["Sample2"] as List<Sample2>; if (sample2List != null && sample2List.Count > 0) { foreach(var item in sample2List) { <tr> <td>@item.C</td> <td>@item.D</td> </tr> } } } </tbody>
关键说明
- 用
as关键字做类型转换,即使ViewData中不存在对应键、或者存储的对象类型和目标泛型列表不匹配,也会返回null而不是直接抛出运行时异常 - 校验逻辑同时判断列表非空、
Count > 0两个条件,只要列表无数据就不会进入循环块,完全不会输出对应<tr>标签,自然实现对应行的隐藏/排除 - 如果你每个列表前还有对应的分组标题行、说明行,把这类行的代码也放到同一个if判断块中,就可以实现列表为空时连同关联行一起隐藏
内容的提问来源于stack exchange,提问作者Veck
相关产品推荐
相关产品推荐

