【问题标题】:asp.net web sites and default namespaces and LINQ Datacontext part 2asp.net 网站和默认命名空间和 LINQ Datacontext 第 2 部分
【发布时间】:2009-03-22 15:02:49
【问题描述】:

让我试着换个角度问这个问题。

我注意到每次使用“网站”模型在浏览器中呈现一个 aspx 页面时,都会在临时 ASP.NET 文件中“即时”创建一个随机程序集。分析 Reflector 中的程序集表明,为任何给定的 .aspx 文件创建的类都在“ASP”命名空间下。

所以,从一个空的“临时 ASP.NET 文件”目录开始,我在 VS2008 中打开了我的 ASP.NET“网站”,并启动了默认页面。我立即观察到该文件夹​​内生成了一个随机目录。一路走下去,我发现创建了 2 个 DLL:App_Code.1lywsqqz.dll 和 App_Web_iohekame.dll。我假设网站中的所有 .aspx 页面都编译为 App_Web dll,而 App_Code 文件夹中的所有内容都编译为 App_Code.dll。

所以如果我的 App_Code C#/VB.net 文件在“ASP”命名空间下,而我的 App_Web 文件是在“ASP”命名空间下创建的,为什么我仍然收到错误“无法加载类型 'ASP.NothwindDataContext '?

有人说“您不需要 App_Code 文件夹中的命名空间”,但我没有尝试过,但仍然得到“无法加载类型 'NorthwindDataContext'”。

那么 App_Code 文件夹、站点的其余部分和命名空间之间发生了什么?

编辑: 这是我的 .aspx 文件中的 LinqDataSource:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="NothwindDataContext" EnableUpdate="True" 
    TableName="Categories">
</asp:LinqDataSource>

“NorthwindDataContext”和“ASP.NorthwindDataContext”都不起作用。

【问题讨论】:

    标签: asp.net web namespaces app-code


    【解决方案1】:

    App_Code C# 源文件中的类型,就像任何 C# 文件一样,不会放在特定的命名空间中,除非 namespace Name {...} 围绕它特别声明。所以在App_Code 中声明的类MyClass 将具有完全限定的类型名称MyClass。就是这样。

    您可以在Web.config 中将其引用为:"MyClass, App_Code"

    旁注:当您在App_Code 中使用 DBML 时,生成的类的命名空间在该文件中定义(打开 DBML 文件时查看属性窗口)。如果您在该文件中指定命名空间,那么您的类自然会在该命名空间中定义。请注意,这与我上面所说的并不矛盾。问题是,LINQ 数据上下文生成器处理文件并在特定命名空间中定义类。

    【讨论】:

    • 那么,您是否应该在 Web.config 中为 App_Code 中的每个类都有一个条目?你能给我一个完整的例子 web.config 例子吗?谢谢。
    • 不!一点也不。我只是说以防万一
    • 没有。你没有。因为它没有在命名空间中声明。全称是“MyClass”。就像您可以在没有 Imports 的情况下使用 System.Console(因为您说的是它的全名)一样,您也可以使用 MyClass,因为这是它的完整名称。
    • 您能否详细说明您的 'Web.config 作为上面的“MyClass, App_Code”评论?您使用哪个标签?你把它放在哪里? ? web.config 对我来说是标签汤。
    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2011-02-07
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多