试问CodeFile、CodeBehind深几许?

      到了One Week One Blog的时间了,最近在学习牛楠遇到了一个问题,写在这里记录一下成长过程吧。ps忘记了截图,所以借了一张图过来、遇到了这样的问题:


     Web上类似的问题还挺多的,百度了一番之后,光明还不是太明朗;不过知识间都是相互贯通的,找不当当事人,那我就找近邻“codefile”吧

<span style="font-family:FangSong_GB2312;font-size:18px;">< %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"Inherits="WebApplication1.WebForm1" %>CodeBehind</span>

CodeBehind

   指定包含与页关联的类的已编译文件的名称。该属性不能在运行时使用。

CodeFile    

   指定指向页引用的代码隐藏文件的路径。此属性与 Inherits 属性一起使用可以将代码隐藏源文件与网页相关联。此属性仅对编译的页有效。

九连环找到Web Site和Web Application

Web Site:

      当使用VS.NET建立页面时,VS自动创建一个CodeBehind文件,当我们编译站点时,VB.ET自动根据页面文件内容,生成临时的"partial"类,然后把这个partial类和CodeBehind中的partail类整合编译,最后生成一个位于bin中的dll文件。(codefile实现)

Web Application

       当我们页面上加入一个新控件时,VS.NET自动回在CodeBehind代码中增加一个protect对象的申明(partial类),并在代码中使用和操作这个对象,VS.NET会时刻维护页面文件的控件与Partail类代码文件的申明之间同步。当我们编译站点时,VS.NET将所有CodeBehind文件编译在一起,生成一个位于bin目录中的dll文件。(codebehind来实现)
       所以用户控件申明应该用CodeBehind而不能用codefile,原因是web application的页面用的是CodeBehind方式,如果页面的用户控件又用codefile方式来编译的化,就会出现矛盾,页面优先于用户控件直接把所有代码文件编程层dll,而不是吧页面生成一个partial类再和代码文件一起编译,用户页面控件将不会被VB.NET根据页面内容生成一个临时类和Codebehind中的partial类整合编译,缺少对用户控件的声明,从而会出现一些问题。
再和代码文件一起编译,页面的用户控件将不会被VS.NET根据页面内容生成一个临时类
 
       SO用CodeBehind就OK了?是这个意思吗?但是红线依旧,这个……改成codefile就没有问题了,其中缘由、还是需要继续研究一下。
参考:
    http://www.360doc.com/content/11/1221/20/6856598_174058525.shtml

                    thanks for your time,欢迎大家多多指教;GanBaDei!!!

评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值