我有一个名为“Entries”的表,并且正在使用 LINQ to SQL 进行数据访问。我创建了一个获取所有条目的存储过程。我已将该存储过程映射到我的数据上下文中的一个方法,我已将返回类型设置为“条目”。
我在我的数据访问类中创建了一个方法,该方法将该方法调用的结果作为列表返回。我将列表绑定到用户控件中的转发器,并尝试访问我的 ascx 文件中的属性“EntryId”,并收到以下错误:
“object”不包含“EntryId”的定义
我在 DataAccess 类中的方法:
public static List<Entry> GetAllEntries()
{
using (DataClassesDataContext context = new DataClassesDataContext())
{
return context.fbGetAllEntries().ToList();
}
}
并在用户控件的 Page_PreRender 事件中:
//my alias at the top of the file for clairification
using ASPWebControls = System.Web.UI.WebControls;
protected void Page_PreRender(System.Object sender, System.EventArgs e)
{
rptEntries = new ASPWebControls.Repeater();
rptEntries.DataSource = DataAccess.GetAllEntries();
rptEntries.DataBind();
}
在我的 ascx 文件中:
<asp:Repeater ID = "rptEntries" runat = "server" >
<ItemTemplate>
<tr>
<td><input type="checkbox" runat="server" value="<%# Container.DataItem.EntryId %>" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
当我用谷歌搜索这个错误时,我发现使用匿名类型时可能会发生这种情况,但这里不是这种情况。我确信我的转发器有一个绑定到它的强类型对象列表。我试过明确地铸造:
rptEntries.DataSource = (List<Entry>)DataAccess.GetAllEntries();
我确定我的 Entry 类型有一个 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;
}
我尝试在我的 ascx 文件中导入我的命名空间:
<%@ Import NameSpace="Namespace.in.my.DataClass.cs" %>
我不确定事情在哪里横向发展,有人可以建议我做错了什么吗?任何帮助将不胜感激,谢谢!
编辑:错过了一个代码块