CodeFile与CodeBehind

Sol*_*nal 136 asp.net

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

是新手还是推荐?或者他们有具体用途吗?

Sha*_*med 162

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

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

  • 我认为它的方式是CodeFile用于"WebSite",而"Codebehind"用于"Web应用程序项目",因为它需要编译.因此,在将"网站"转换为"Web应用程序项目"时,我们可能需要手动将所有CodeFile事件更改为Codebehind! (36认同)
  • 代码隐藏与asp 1.1相关联的事实,而代码文件链接到asp.net 2.0可能链接到思考代码文件是"优越"代码隐藏当它们不是(和恕我直言,这恰恰相反:Web应用程序比网站更好) (3认同)
  • 那么,这是否意味着开发人员必须手动更改Page指令的属性,或者有没有办法创建一个Web项目,默认情况下,每次添加新网页时都会选择代码隐藏或代码文件? (2认同)
  • CodeFiles在开发过程中很不错,因为您可以在保存和刷新页面后测试更改,而无需构建项目。如果您不喜欢将.cs和.vb文件发布到生产服务器,仍然可以选择将.Net 2+ CodeFile编译模型文件“发布”为DLL。发布项目时,可以选择选择“预编译”选项,以将.aspx文件和.cs / .vb文件中的一个或两个都转换为DLL,有效地类似于CodeBehind。 (2认同)
  • 正如 renegadeMind 指出的那样(以及从它得到的赞成票来看),我认为应该编辑响应以强调这样一个事实:**CodeFile 与“网站”类型的解决方案深度链接,而 CodeBehind 链接到“Web 应用程序项目”** 。不幸的是我的编辑被拒绝了。 (2认同)

小智 5

Codebehind文件需要在运行之前编译,但在src中我们不需要编译然后运行..只需保存文件.

  • `but in src` - 你的意思是`but in the CodeFile`? (2认同)

Dav*_*ogo 5

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

如果我不添加像

CodeFile=login.aspx.cs
Run Code Online (Sandbox Code Playgroud)

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

如果我不添加引用后的代码,如

CodeBehind=login.aspx.cs
Run Code Online (Sandbox Code Playgroud)

对MembershipUser等安全类的引用在编译时和尝试使用intellisense时都会失败,例如"无法找到类型或命名空间MembershipUser".我已根据.Net 4.0框架的要求添加了对System.Web.ApplicationServices的引用.

我应该补充说,这些麻烦的文件正在使用IIS应用程序工具创建的网站中的应用程序中运行.当我从Visual Studio打开网站时,我对解析器错误或引用错误没有任何困难.仅当我在Visual Studio中将应用程序作为项目打开时,才会出现这种混淆.