所以我似乎在将我的 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)或 this article关于区别。
简而言之:
假定 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 会告诉您编译后的程序集实际上并不包含您告诉它要查找的类。
关于c# - 将代码文件转换为代码隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417365/