c# - 将代码文件转换为代码隐藏

标签 c# .net code-behind page-directives

所以我似乎在将我的 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/

相关文章:

c# - 我想从已发布的 .net webforms 项目获取代码隐藏

c# - 访问动态创建的文本框文本

c# - 在 C# ASP.NET 3.5 中更改 HtmlForm 操作

c# - 无法从 Func<T,T,T> 转换为 Func<T,T,T>

c# - 如何获取非绑定(bind) WPF 组合框来显示所选项目而不是 {System.Windows.Controls.ComboBoxItem :

c# - WCF 服务主机、服务端点和绑定(bind)

c# - 将字符串作为数组访问,检查索引的值并可能更改该索引中的字符

c# - 在 StackExchange.Redis 中通过键模式获取值

C#保龄球游戏计算问题

c# - 保存 encog 网络 c#