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

ASP.NET中Eval()在非数据绑定控件上下文使用报错咨询

解决Eval()非数据绑定上下文调用的System.InvalidOperationException异常

问题原因

Eval()、Bind()这类数据绑定方法仅能在GridView、Repeater、DataList等数据绑定控件的模板内部使用,你在页面普通代码块<% ... %>中直接调用Eval(),脱离了数据绑定控件的上下文,因此触发该异常(错误位于代码第308行)。

可行解决方案

  • 将逻辑移到数据绑定控件模板内
    使用数据绑定表达式标记<%# %>替代普通代码块标记<% %>,确保Eval()处于控件绑定上下文:

    <asp:Repeater ID="ServiceRepeater" runat="server">
        <ItemTemplate>
            <%# if (Eval("services_longtitle").ToString() == "Google Ads Services") { %>
                <!-- 此处添加需要显示的内容 -->
            <%# } %>
        </ItemTemplate>
    </asp:Repeater>
    
  • 直接从数据源对象取值
    如果逻辑不在数据绑定控件内,跳过Eval(),直接访问后台传递到页面的数据源对象。比如后台已将数据赋值给protected级别的实体变量currentService:

    <% if (currentService.services_longtitle == "Google Ads Services") { %>
        <!-- 此处添加需要显示的内容 -->
    <% } %>
    
  • 后台缓存数据后前台调用
    后台将需要判断的字段存为页面可访问的属性,前台直接调用该属性:
    后台代码:

    protected string CurrentServiceTitle { get; set; }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        // 示例:从数据源获取数据并赋值
        var serviceData = GetServiceDataFromDB();
        CurrentServiceTitle = serviceData.services_longtitle;
    }
    

    前台代码:

    <% if (CurrentServiceTitle == "Google Ads Services") { %>
        <!-- 此处添加需要显示的内容 -->
    <% } %>
    

内容的提问来源于stack exchange,提问作者Enes Şahin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:17:34