首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法找到在TypeName属性ObjectDataSource中指定的类型

无法找到在TypeName属性ObjectDataSource中指定的类型
EN

Stack Overflow用户
提问于 2013-12-02 12:51:00
回答 1查看 16.4K关注 0票数 6

由于需要,所有网站.cs文件都存储在App_Code目录中,并编译成App_Code.dll。当我试图访问网站的一个特定页面时,出现了一个错误。

代码语言:javascript
复制
Description: An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more
information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The type
specified in the TypeName property of ObjectDataSource
'DataSourceSubmissionList' could not be found.

我有一个Gridview控件,它由ObjectDataSource填充。代码如下:

/layouts/Portal/Company/Application/code.ascx:

代码语言:javascript
复制
<%@ Control Language="c#" AutoEventWireup="true"
CodeFile="~/layouts/Portal/Company/Application/code.ascx.cs"
Inherits="Project.WebUserControls.myapplications.sublayout" %>

<dx:ASPxGridView ID="ASPxGridView1"
  runat="server"
  DataSourceID="DataSourceSubmissionList"
  KeyFieldName="SubmissionId"
</dx:ASPxGridView>

<asp:ObjectDataSource
  ID="DataSourceSubmissionList"
  runat="server"
  TypeName="Project.WebUserControls.myapplications.sublayout">
</asp:ObjectDataSource>

/layouts/Portal/Company/Application/code.ascx.cs:

代码语言:javascript
复制
namespace Project.WebUserControls.myapplications
{  
    public partial class sublayout: System.Web.UI.UserControl 
    {
    }
}

当我在code.ascx文件中使用这一行获得完全限定的类型名时.

代码语言:javascript
复制
<% Response.Write(typeof(Project.WebUserControls.myapplications.sublayout).AssemblyQualifiedName); %>

它会在页面上打印这个。

代码语言:javascript
复制
Project.WebUserControls.myapplications.sublayout, App_Web_oiftguk4,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

但是,在ObjectDataSource TypeName中使用此类型的TypeName会导致错误。

关于这个错误信息,我已经经历了许多问题。我已经看到,可能的解决方案可能是在TypeName属性like this中同时使用名称空间和程序集名称。但是我不能这样做,因为代码是动态编译的,而且程序集名称一直在变化。

另一件事--只有在使用CodeFile方法时才会发生此错误。如果我转到CodBehind,没问题。

这种行为的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 15:27:53

我通过在TypeName期间初始化Page_Init属性而不直接在ObjectDataSource中指定TypeName来解决这个问题:

/layouts/Portal/Company/Application/code.ascx.cs:

代码语言:javascript
复制
public void Page_Init(object o, EventArgs e)
{
   DataSourceSubmissionList.TypeName = this.GetType().AssemblyQualifiedName;
}

/layouts/Portal/Company/Application/code.ascx:

代码语言:javascript
复制
<asp:ObjectDataSource
  ID="DataSourceSubmissionList"
  runat="server"
</asp:ObjectDataSource>
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20328819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档