日期:2014-05-20  浏览次数:21725 次

System.InvalidOperationException: 无法确定 MetaTable
使用EntityDataSource绑定数据源,用GridView显示,用自动生成的列就没问题,自定义列就显示上面的错误,应该是在动态控件那地方出错了,把动态控件去掉就可以显示。求大神解答。具体代码为
<asp:EntityDataSource ID="StudentsEntityDataSource" runat="server" 
        ConnectionString="name=SchoolEntities" DefaultContainerName="SchoolEntities" 
        EnableFlattening="False" EntitySetName="Person" EntityTypeFilter="Person"
        EnableDelete="True"
        EnableUpdate="True" Include="StudentGrade" 
        OrderBy="it.LastName">
 </asp:EntityDataSource>
 <asp:GridView ID="StudentsGridView" runat="server" 
        DataSourceID="StudentsEntityDataSource" AutoGenerateColumns="False">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:CommandField ShowDeleteButton="True" />
            <asp:TemplateField HeaderText="姓名" SortExpression="LastName">
                <EditItemTemplate>
                    <%--使用动态控件代替标准的TextBox控件--%>
                    <asp:DynamicControl ID="LastNameTextBox" runat="server" 
                    DataField="LastName" Mode="Edit" />
                    <asp:DynamicControl ID="FirstNameTextBox" runat="server" 
                    DataField="FirstName"
                        Mode="Edit" />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:DynamicControl ID="LastNameLabel" runat="server" 
                    DataField="LastName" Mode="ReadOnly" />
                    <asp:DynamicControl ID="FirstNameLabel" runat="server" 
                    DataField="FirstName" Mode="ReadOnly" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
错误为:

无法确定 MetaTable。无法为数据源“StudentsEntityDataSource”确定
MetaTable,且无法从所请求的 URL 推断它。确保表映射到数据源,或数据源配置了有效的文本类型和表名称,或此请求是已注册的
DynamicDataRoute 的一部分。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 无法确定
MetaTable。无法为数据源“StudentsEntityDataSource”确定 MetaTable,且无法从所请求的 URL
推断它。确保表映射到数据源,或数据源配置了有效的文本类型和表名称,或此请求是已注册的 DynamicDataRoute 的一部分。
源错误:  执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。


------解决方案--------------------
楼主引用这个控件貌似有问题,示例上是:
 <div>
        <asp:DynamicAutoData ID="DynamicAutoData1" runat="server" />
    </div>


这么写的,可以看看下面的博客