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

C# Eval值无法在Div标签中显示的问题排查求助

排查Eval绑定文本在HTML中消失的问题

这种情况我做ASP.NET项目时也碰到过,结合你给出的ItemTemplate代码片段,大概率是这几个原因导致的,咱们一步步排查:

  • CSS样式强制隐藏了内容
    你的div标签加了hide-description类,先去检查这个类的CSS规则,是不是设置了display: none或者visibility: hidden?如果是的话,哪怕Eval绑定到了值,页面也会把它藏起来。可以先临时删掉这个类,刷新页面看看内容会不会显示,再根据需求调整样式逻辑。

  • Eval绑定的字段实际为空或绑定上下文异常
    你说单独读取字符串没问题,但嵌入HTML后可能因为数据绑定的上下文变化?可以先做个调试测试,把绑定代码改成:

    <%# "DEBUG: " + (Eval("OFFENSE") ?? "NULL") %>
    

    看看页面上会不会输出DEBUG: xxx的内容,如果只显示DEBUG: NULL,那说明你的数据源里OFFENSE字段确实是空的,或者绑定的数据源根本没给到这个控件。

  • 绑定语法的潜在问题
    你当前的条件判断<%# Eval("OFFENSE").ToString() == "" ? "hidden" : "" %>有个风险:如果OFFENSE是null的话,调用ToString()会直接抛出空引用异常,导致整个模板渲染失败,后续的div内容自然也不会显示。建议改成更安全的写法:

    <%# string.IsNullOrEmpty(Eval("OFFENSE")?.ToString()) ? "hidden" : "" %>
    

    用空合并运算符?.避免空引用,再用string.IsNullOrEmpty统一判断空或空字符串。

  • 数据控件未正确执行数据绑定
    如果这个ItemTemplate是在GridView、Repeater这类数据控件里,一定要确认后台代码里有没有调用控件的DataBind()方法,并且数据源已经正确赋值给了控件。比如:

    myRepeater.DataSource = myDataSource;
    myRepeater.DataBind();
    

    要是没执行DataBind,控件根本不会渲染绑定的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:44:20