You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 7 Razor视图条件判断失效及页面空白问题求助

问题解决:ViewData条件判断失效及页面空白问题

问题分析

  1. 条件判断不生效:ViewData存储的是object类型,直接和字符串"rank"做==比较时,是引用比较而非值比较,即便内容是"rank",也会判定为不相等。
  2. 转ToString()后页面空白:此时条件判断生效,但Model.Tables[0]可能不存在(比如DataSet里没有数据表),遍历Model.Tables[0].Rows时触发空引用异常,导致整个视图渲染失败,页面空白。

解决方案

  • 对ViewData的值做安全的类型转换,同时做空值校验
  • 先检查DataSet中的数据表是否存在、是否有数据,再进行遍历

修改后的视图代码

@using System.Data
@model DataSet

hello, world
<br />
@ViewData["searchtype"]

@if (!string.IsNullOrEmpty(ViewData["searchtype"]?.ToString()) && ViewData["searchtype"].ToString() == "rank")
{
    <h2>Ranks</h2>
    @if (Model?.Tables.Count > 0 && Model.Tables[0].Rows.Count > 0)
    {
        <ol>
            @foreach (DataRow dr in Model.Tables[0].Rows)
            {
                <li>@dr["name"].ToString()</li>
            }
        </ol>
    }
}

关键说明

  • 使用ViewData["searchtype"]?.ToString()做安全转换,避免空值调用ToString()引发异常
  • 增加Model?.Tables.Count > 0判断,确保数据表存在后再访问Tables[0]
  • 增加Tables[0].Rows.Count > 0判断,只有当有数据时才渲染列表,空表时只显示标题Ranks

内容的提问来源于stack exchange,提问作者Lisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:53:13