我有一个像这样定义的LinqDataSource:
<asp:LinqDataSource ID="LinqDataSource1" runat="server" OnSelecting="LinqDataSource_FileSelecting"></asp:LinqDataSource>
在LinqDataSource_FileSelecting中,它返回/设置一个List<string>
到e.Result,其中e是LinqDataSource的Selecting事件中的EventArgs(LinqDataSourceSelectEventArgs)。我在页面加载时收到此错误:
“LinqDataSource'LinqDataSource1'的ContextTypeName属性必须指定数据上下文类型。”
根据此消息并查看文档,我需要设置LinqDataSource的ContextTypeName和TableName属性。 ContextTypeName通常是类的名称,TableName将是该类中可枚举属性的名称。
当数据源是List<string>
时,我不确定我可以分配什么ContextTypeName或TableName。我已经为ContextTypeName尝试了System.Collections.Generic.List<string>
,但这不起作用,我收到“无法加载类型'System.Collections.Generic.List<string>
'”
我意识到当数据源是在Selecting事件中生成的List<string>
时,LinqDataSource可能不是适当的控件。但是我可以为这种情况设置ContextTypeName和TableName吗?
答案 0 :(得分:9)
找到答案。事实证明,在使用Selecting事件并将List<string>
分配给e.Result时,可以省略ContextTypeName和TableName。但是,如果将null
分配给e.Result,则会发生此错误,因为ASP.NET不知道数据类型。我在Selecting事件上的代码被设计为将一个非null值设置为e.Result,但是一个单独的问题导致null设置为e.Result ...导致此错误。