asp.net 网站和默认命名空间以及 LINQ Datacontext 第 2 部分

发布于 2024-07-16 09:45:15 字数 975 浏览 6 评论 0原文

让我尝试从另一个角度来问这个问题。

我注意到,每次使用“网站”模型在浏览器中呈现 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”都不起作用。

Let me try to ask this question from a different angle.

I noticed that everytime an aspx page gets rendered in the browser using the "web site" model, a random assembly gets created 'on-the-fly' in the Temporary ASP.NET files. Analyzing the assembly in Reflector shows that the class created for any given .aspx file is under the "ASP" namespace.

So, starting with a empty "Temporary ASP.NET Files" directory, I opened my ASP.NET "website" in VS2008, and launched the default page. Immediately I observed that a random directory was generated inside that folder. Working my way down the path, I found 2 DLLs created: App_Code.1lywsqqz.dll, and App_Web_iohekame.dll. I assume that all the .aspx pages in the website get compiled into App_Web dll and everything in App_Code folder gets compiled into App_Code.dll.

So if my App_Code C#/VB.net files are under the "ASP" namespace, and my App_Web files are created under the "ASP" namespace, how come I still get an error "Could not load type 'ASP.NothwindDataContext'?

Somebody said "you don't need namespaces in the App_Code folder", but I tried it without and still get "Could not load type 'NorthwindDataContext'".

So what's going on between the App_Code folder, the rest of the site, and namespaces?

EDIT:
Here's my LinqDataSource in my .aspx file:

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

Neither "NorthwindDataContext", nor "ASP.NorthwindDataContext" works.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蹲在坟头点根烟 2024-07-23 09:45:15

App_Code C# 源文件中的类型与任何 C# 文件一样,不会放入特定的命名空间中,除非由其周围的 namespace Name {...} 特别声明。 因此,在 App_Code 中声明的类 MyClass 将具有完全限定的类型名称 MyClass。 只是。

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

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

Types in App_Code C# source files, just like any C# file, will not be put in a specific namespace unless specifically declared by namespace Name {...} around it. So a class MyClass declared in App_Code will have the fully qualified type name MyClass. Just that.

You can reference it in Web.config as: "MyClass, App_Code".

Side note: When you are using a DBML in App_Code, the namespace of generated classes are defined in that file (look at the properties window when DBML file is open). If you specify a namespace in that file, naturally, your classes will be defined in that namespace. Note that this does not contradict with what I said above. The thing is, the LINQ data context generator processes the file and defines the classes in the specific namespace.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文