ASP.NET CodeFile,CodeBehind和Inherits

时间:2014-02-17 22:25:05

标签: asp.net webforms

我的困惑在这里并不是新的或在网络上,但是,我有一些问题,我没有在任何地方找到答案:

第一个问题是:

  

为什么CodeFile上需要继承而不是CodeBehind?

我阅读了http://msdn.microsoft.com/en-us/library/vstudio/ms178138(v=vs.100).aspx以及更多页面,我知道CodeFile是用于源代码和动态编译而另一个用于程序集。这又提出了另一个问题:

  

为什么每个人都说如果我找到CodeBehind必须是一个程序集   File.aspx.cs无处不在,包括在我拥有的测试项目中   奇迹般有效?这是一个编译的程序集吗?

但是,从第一个问题开始,基于我提供的网址,我可能会理解,为什么继承是必要的。我假设编译器必须知道稍后要编译的部分类的名称。说得通。然而,在CodeBehind上也不一定有必要吗?如果我们要合并部分类,我想我应该给出我要合并的名称。我甚至尝试在.cs文件中添加另一个部分类,并且编译/运行良好。

我在这里错过了什么吗?

我还读到CodeBehind不再使用了,它是CodeFile,新的。

任何.NET大师帮助我?

提前谢谢大家。

更新:

我尝试在CodeBehind上使用no Inherit实现事件。它没用。这更有意义。但是,它不会在编译时抱怨,而CodeFile会这样做。这有什么理由吗?

2 个答案:

答案 0 :(得分:1)

继承属性带有写在代码隐藏文件后面的类名。你可以在文件后面的同一代码中有多个类,并在两个不同的.aspx文件中继承

答案 1 :(得分:1)

CodeBehind文件提供了aspx页面的代码。当您添加一个新的“带有CodeBehind的ASP.NET网页”时,我们称之为NewPage.aspx,还会创建2个文件,名为NewPage.aspx.cs和NewPage.aspx.designer.cs。 NewPage.aspx.cs是您的CodeBehind文件。正如Vijay所说,由于(C#)文件可以有多个类(与Java不同,其中类文件只能包含1个类,并且类名必须与文件名匹配),Inherits=[namespace].[class]表示您希望将哪个类实际用于网页。 CodeBehind属性适用于Web应用程序项目。另一方面,CodeFile属性用于网站项目。