C# ';对象';不包含在ascx文件中使用转发器的定义错误
我有一个名为“Entries”的表,正在使用LINQtoSQL进行数据访问。我创建了一个存储过程来获取所有条目。我已经将存储的proc映射到数据上下文中的一个方法,我已经将返回类型设置为“Entry” 我在我的数据访问类中创建了一个方法,该方法以列表的形式返回此方法调用的结果。我正在将列表绑定到用户控件中的中继器,并试图访问ascx文件中的属性“EntryId”,但出现以下错误: “对象”不包含“EntryId”的定义 我的DataAccess类中的我的方法:C# ';对象';不包含在ascx文件中使用转发器的定义错误,c#,asp.net,linq-to-sql,user-controls,C#,Asp.net,Linq To Sql,User Controls,我有一个名为“Entries”的表,正在使用LINQtoSQL进行数据访问。我创建了一个存储过程来获取所有条目。我已经将存储的proc映射到数据上下文中的一个方法,我已经将返回类型设置为“Entry” 我在我的数据访问类中创建了一个方法,该方法以列表的形式返回此方法调用的结果。我正在将列表绑定到用户控件中的中继器,并试图访问ascx文件中的属性“EntryId”,但出现以下错误: “对象”不包含“EntryId”的定义 我的DataAccess类中的我的方法: public static Lis
public static List<Entry> GetAllEntries()
{
using (DataClassesDataContext context = new DataClassesDataContext())
{
return context.fbGetAllEntries().ToList();
}
}
在我的ascx文件中:
<asp:Repeater ID = "rptEntries" runat = "server" >
<ItemTemplate>
<tr>
<td><input type="checkbox" runat="server" value="<%# Container.DataItem.EntryId %>" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
<%@ Import NameSpace="Namespace.in.my.DataClass.cs" %>
当我在谷歌上搜索这个错误时,我发现它可能发生在使用匿名类型时,但这里的情况并非如此。我确信我的中继器绑定了一个强类型对象列表。我已经尝试过明确的铸造:
rptEntries.DataSource = (List<Entry>)DataAccess.GetAllEntries();
rptcentries.DataSource=(List)DataAccess.GetAllEntries();
我确信我的条目类型具有EntryId,因为我可以这样做:
foreach (Entry en in (List<Entry>)rptEntries.DataSource)
{
//when I step through I can see these are the correct values
int i = en.EntryId;
}
foreach(在(列表)rptcentries.DataSource中输入en)
{
//当我一步一步走过去时,我可以看到这些是正确的值
int i=en.EntryId;
}
我已尝试在我的ascx文件中导入我的命名空间:
<asp:Repeater ID = "rptEntries" runat = "server" >
<ItemTemplate>
<tr>
<td><input type="checkbox" runat="server" value="<%# Container.DataItem.EntryId %>" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
<%@ Import NameSpace="Namespace.in.my.DataClass.cs" %>
我不确定事情的发展方向,有人能告诉我我做错了什么吗?任何帮助都将不胜感激,谢谢
编辑:缺少代码块请在数据绑定语句中尝试以下复选框:
value="<%# Eval("EntryId") %>"
value=“”
在数据绑定语句中尝试以下复选框:
value="<%# Eval("EntryId") %>"
value=“”
即使项目是强类型的,repeater控件也会在ItemTemplate
中将其作为对象类型公开。您需要显式取消装箱:
<%# ((Entry)Container.DataItem).EntryId %>
请注意,有一个允许您指定
ItemType
属性并消除取消装箱的需要。即使项目是强类型的,repeater控件也会在ItemTemplate
中将其作为对象类型公开。您需要显式取消装箱:
<%# ((Entry)Container.DataItem).EntryId %>
请注意,具有允许您指定ItemType
属性并消除取消装箱需要的