Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么不能使用<;%=…%&燃气轮机;在ListView中_Asp.net_Data Binding - Fatal编程技术网

Asp.net 为什么不能使用<;%=…%&燃气轮机;在ListView中

Asp.net 为什么不能使用<;%=…%&燃气轮机;在ListView中,asp.net,data-binding,Asp.net,Data Binding,如果我们想在页面中输出一个变量,该变量在页面的代码隐藏类文件中定义。我们可以将变量设置为public或protect可见性。在头版我们可以像下面一样使用它。 但我不知道为什么不能在ListView中使用它。请帮助检查我的代码 在头版 <div id="divIssuedListContainer" class="myIssuedList"> <asp:ListView id="listShower" runat="server"> <LayoutTempl

如果我们想在页面中输出一个变量,该变量在页面的代码隐藏类文件中定义。我们可以将变量设置为
public
protect
可见性。在头版我们可以像下面一样使用它。

但我不知道为什么不能在ListView中使用它。请帮助检查我的代码

在头版

<div id="divIssuedListContainer" class="myIssuedList">
<asp:ListView id="listShower" runat="server">
    <LayoutTemplate>
        <div id="divIssuedListHeadTitle">
            <div id="divIssuedListTitleIco">
                <img alt="" src="ico/IssuedCap.png" />
            </div>
            <div id="divIssuedListTitleName">
                <span>ISSUED</span><span>TRADE NAMES</span><span>/LICENSES</span>
            </div>
            <div id="divIssuedListItemNumber">
                <span>
                    <%=iListNumber%></span>
            </div>
        </div>
        <div style="clear:both"></div>
        <div id="divIssuedListBody">
            <ul>
                <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
            </ul>
        </div>
    </LayoutTemplate>
    <ItemTemplate>
        <li>
            <table>
                <tr>
                    <td>
                        <img alt="" src="" />
                    </td>
                    <td>
                        <div>
                            <span>
                                <%# Eval("altID") %>
                                -
                                <%# Eval("englishTradeName") %></span></div>
                        <div>
                            <span>Expired Date:<%# Eval("expDate") %></span>
                        </div>
                    </td>
                </tr>
            </table>
        </li>
    </ItemTemplate>
</asp:ListView>

颁发的贸易名称/许可证
  • - 截止日期:
  • 在页面的代码后面

    public partial class _Default : System.Web.UI.Page
        {
            protected int iListNumber = 0;
            protected void Page_Load(object sender, EventArgs e)
            {
                List<SimpleCapModel> DataSourceList = TestDataHelper.GetMyIssuedList();
                listShower.DataSource = DataSourceList;
                iListNumber = DataSourceList.Count();
                listShower.DataBind();
            }
        }
    
    public分部类\u默认值:System.Web.UI.Page
    {
    受保护的整数iListNumber=0;
    受保护的无效页面加载(对象发送方、事件参数e)
    {
    List DataSourceList=TestDataHelper.GetMyIssuedList();
    listShower.DataSource=DataSourceList;
    iListNumber=DataSourceList.Count();
    listShower.DataBind();
    }
    }
    
    我收到一个错误页面,上面写着:

     The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
    
    Source Error:
    
    
    Line 19:             listShower.DataSource = DataSourceList;
    Line 20:             iListNumber = DataSourceList.Count();
    Line 21:             listShower.DataBind();//this line cause error.
    Line 22:         }
    Line 23:     }
    
    无法修改控件集合,因为控件包含代码块(即)。
    描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。
    异常详细信息:System.Web.HttpException:无法修改控件集合,因为控件包含代码块(即)。
    源错误:
    第19行:listShower.DataSource=DataSourceList;
    第20行:iListNumber=DataSourceList.Count();
    第21行:listShower.DataBind()//这行代码会导致错误。
    第22行:}
    第23行:}
    
    如果我使用表达式
    。错误消失了,但我得到了一个空值,而不是列表的编号。请查看以下呈现结果html:

    <div id="divIssuedListItemNumber">
    <span> </span>
    </div>
    
    
    
    我不知道我是否错过了什么?如果我这样做了。请帮助让我知道。谢谢。

    您需要使用
    ,因为您使用的是数据绑定ListView,否则会出现异常(有关内联表达式的更多信息,请参阅)

    试着使用
    ,看看这是否有区别

    更新

    问题似乎是您的内联表达式位于
    LayoutTemplate
    中,如果没有或扩展
    ListView
    ,数据绑定[显然]将无法工作

    有关如何扩展
    列表视图的示例,请参见以下任一项:


      • 鉴于您收到的错误,它基本上意味着:您不能在数据绑定控件中随机抛出.NET标记

        相反,解决方案是将随机文本扔到.NET控件中,如下所示:


        当您在代码中放入.NET代码块时,它必须动态地为其构建一个控件占位符。这有点棘手。但是,如果将所有自定义标记封装在一个控件中,那么只有一个属性得到数据绑定,并且数据绑定块保持“干净”,如果这有意义的话。

        +1非常有用的帖子。但是
        不起作用。怎么起作用?还是给你一个例外?没有给你想要的值?对不起,没有任何例外,没有显示列表的编号。谢谢。@Joe.wang:更新的答案。@pete是的,对,我也发现这是因为表达式在列表视图中。但在你告诉我之前,我没有找到解决办法。非常好!谢谢。它显示0了吗?列表中的每一项都应该递增吗?该值的期望值是多少?它显示为空,呈现html为
        。它应该是列表的编号(在我的例子中是10)或0。谢谢