在Repeater控件内部这样写<% if (DataBinder.Eval(Container.DataItem, "State").ToString() == "0")
                    
                    {
                        Response.Write("已处理");
                    }
                    else
                    {
                        Response.Write("未处理");                    } 
        
                        %>
这样用的话,会报“当前上下文中不存在名称“Container”
然而改成条件表达式<%#DataBinder.Eval(Container.DataItem,"State").ToString()=="0"?"已处理":"未处理" %>则可以正常输出。然而 #一定要和 DataBinder.Eval(Container.DataItem,"State") 在一起用吗?我做了这样一个测试<% "你好" %>报错<%#"你好" %>  输出字符串你好
也就是说#只和输出有关,跟DataBinder没有直接联系<%#DataBinder.Eval(Container.DataItem,"State").ToString()=="0"?"已处理":"未处理" %>处理的最后结果是  <%#"已处理"%>或<%#"未处理"%>那么可以证明#跟DataBinder没有直接联系.所以第一种形式  if (DataBinder.Eval(Container.DataItem, "State").ToString() == "0") 为什么会报“当前上下文中不存在名称“Container”错误呢

解决方案 »

  1.   

    难道是语法问题?  貌似container只能在<%# %>里
      

  2.   

    是你自己搞混了
    <%="你好"%><%#%>是数据控件绑定的时候用
    <% if (DataBinder.Eval(Container.DataItem, "State").ToString() == "0")
     至于你这里DataBinder,这个本来就是要加#才可以使用的
      

  3.   

    <%# if (DataBinder.Eval(Container.DataItem, "State").ToString() == "0")%>
    <%{%>
    <% Response.Write("已处理");%>
    <% }%>
    <% else%>
    <% {%>
    <% Response.Write("未处理");%>
    <% }%>
      

  4.   

    "也就是说#只和输出有关,跟DataBinder没有直接联系"
    看你说,不懂就问,还装懂
    还有,你直接在页面中输出试试<%#"你好" %>,不跟数据源控件一起使用能用?
      

  5.   

    我没搞混那你怎么解释 <%#"你好" %> 输出字符串你好,这里可一点没用到绑定
      

  6.   

    CS1525: 无效的表达式项“if”