0

我正在尝试使用带有内联代码的 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”不包含“DataItem”的定义,并且没有扩展方法“DataItem”接受“System.Web.UI.WebControls.ListView”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)

有没有办法使这项工作?

4

1 回答 1

4

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

原因<%# 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>
于 2015-10-13T17:31:22.367 回答