我正在尝试使用带有内联代码的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'(你错过了吗? 使用指令或程序集引用?)
有没有让这项工作?
答案 0 :(得分:3)
在遇到同样的问题之后遇到了这个问题。如果有人在将来做同样的事情,请在此处发布答案。
原因是<%# 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>