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"(您是否缺少 使用指令或程序集引用?
有没有办法做这个工作?
在遇到同样的问题后才遇到这个问题。在此处发布答案,以防将来有人这样做。
原因是数据绑定表达式(例如 <%# 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>