ASP.NET Web 窗体中的列表视图中的内联代码

本文关键字:代码 视图 列表 窗体 NET ASP Web | 更新日期: 2023-09-27 18:36:25

我正在尝试使用带有内联代码的 ASP.NET WebFroms ListView(对于全球化,Frame.Article来自resx文件):

      <asp:ListView runat="server" ID="demo" ItemType="Quarters<int>">
        <LayoutTemplate>
                    <strong><%# Frame.Article %></strong>                        
                    <strong><%# Frame.Customer %></strong>   
                    <asp:PlaceHolder runat="server" ID="itemPlaceholder" />  
        </LayoutTemplate>
        <ItemTemplate>
            <p><%# Item.Q1 %></p>
        </ItemTemplate>
    </asp:ListView>

代码隐藏:

 Quarters<int> quarter = new Quarters<int>();
 quarter.Q1 = 10;
 quarter.Q2 = 20;
 quarter.Q3 = 30;
 quarter.Q4 = 40;
 demo.DataSource = new List<Quarters<int>>(){quarter};
 demo.DataBind();

但我总是收到此错误:

编译器错误消息: CS1061: 'System.Web.UI.WebControls.ListView' 不包含"数据项"的定义,也没有扩展方法 "数据项"接受类型的第一个参数 可以找到"System.Web.UI.WebControls.ListView"(您是否缺少 使用指令或程序集引用?

有没有办法做这个工作?

ASP.NET Web 窗体中的列表视图中的内联代码

在遇到同样的问题后才遇到这个问题。在此处发布答案,以防将来有人这样做。

原因是数据绑定表达式(例如 <%# Frame.Article %> ) 在LayoutTemplate内。ASP.NET 不支持此类模板中的数据绑定表达式。

上述特定问题的最简单解决方案是将这些表达式移出ListView模板,即:

  <strong><%# Frame.Article %></strong>                        
  <strong><%# Frame.Customer %></strong> 
  <asp:ListView runat="server" ID="demo" ItemType="Quarters<int>">
    <LayoutTemplate>  
        <asp:PlaceHolder runat="server" ID="itemPlaceholder" />  
    </LayoutTemplate>
    <ItemTemplate>
        <p><%# Item.Q1 %></p>
    </ItemTemplate>
</asp:ListView>