145

ASP.NET 用户控件声明中的CodeFile ="file.ascx.cs" 和CodeBehind ="file.ascx.cs" 有什么区别?

是更新的还是推荐的?还是它们有特定的用途?

4

3 回答 3

170

CodeBehind:需要编译(ASP.NET 1.1 模型)。编译后的二进制文件放在网站的 bin 文件夹中。在部署之前,您需要在 Visual Studio 中进行编译。当您不希望源代码以纯文本形式查看时,这是一个很好的模型。例如,在向您没有义务提供代码的客户交付时。

CodeFile:您为源文件提供部署解决方案。ASP.NET 2.0 运行时在需要时编译代码。编译后的文件位于 Microsoft.NET[.NET version]\Temporary ASP.NET Files。

于 2009-06-05T08:46:27.083 回答
6

我正在使用 Visual Studio Express 2012 For Web 中的应用程序项目并使用 .NET 4.0。在我的登录和更改密码页面的代码隐藏文件中,我发现在声明中我需要 CodeBehind 和 CodeFile。

如果我不添加代码文件引用,例如

CodeFile=login.aspx.cs

网页不解析,浏览器显示解析器错误。我是否编译项目都没有关系。

如果我没有在参考后面添加代码,例如

CodeBehind=login.aspx.cs

对 MembershipUser 等安全类的引用在编译时和尝试使用智能感知时都会失败,并出现“找不到类型或命名空间 MembershipUser”之类的错误。根据 .Net 4.0 框架的要求,我添加了对 System.Web.ApplicationServices 的引用。

我应该补充一点,这些麻烦的文件正在使用 IIS 应用程序工具创建的网站内的应用程序中运行。当我从 Visual Studio 打开网站时,我没有遇到解析器错误或引用错误的问题。仅当我在 Visual Studio 中将应用程序作为项目打开时才会发生这种混淆。

于 2013-06-09T03:29:36.383 回答
5

代码隐藏文件需要在运行前编译,但在 src 中我们不需要编译然后运行.. 只需保存文件。

于 2009-05-23T11:07:00.530 回答