将代码文件转换为代码隐藏

本文关键字:代码 隐藏 文件 转换 | 更新日期: 2023-09-27 18:32:52

所以我似乎在将我的CodeFile引用到CodeBehind中遇到了一些困难。在你问之前,我没有Visual Studio,也不在Windows上。代码托管在我有权访问的 IIS 服务器上。

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeFile="anon.cs" %>

此代码完美运行,但是将其更改为:

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeBehind="anon.cs" %>

页面返回错误:

Parser Error Message: Could not load type 'corn.cheese.pies.CasLogin'.

将代码文件转换为代码隐藏

你确定你了解 CodeFile 和 CodeBehind 之间的区别吗?例如,请参阅CodeFile vs CodeBehind(忽略接受答案,尽管两个链接都是dea(或这篇关于差异的文章。

简而言之:

假定CodeBehind文件编译为部署在网站的bin文件夹中的程序集。当 ASP.NET 引擎加载aspx文件时,它会使用 Inherits 指令尝试查找该类。CodeBehind文件主要用于帮助编译(和工具,例如"查看源代码"(,但工作是在编译时完成的。

CodeFile文件由 ASP.NET 在运行时按需查找和编译。您可以"预编译"您的网站以回退到旧模型,如果您不想将源代码部署到每个网站,这将非常有用。但默认情况下,CodeFile文件是部署到站点的.cs文件,并且类在 ASP.NET 临时存储文件夹中生成。(从技术角度来看:CodeFile页是partial class定义,只有类的自定义代码隐藏部分实际部署在 C# 文件中;这就是最初不存在CodeFile的原因,因为 C# 编译器最初无法执行分部类。

通过从 CodeFile 更改为 CodeBehind,您告诉 ASP.NET 忽略 C# 文件的存在,而只在已编译的程序集中查找它。 反过来,ASP.NET 告诉您编译的程序集实际上并不包含您告诉它要查找的类。