Application Page-- Pages in _layouts/ directory
Site Page-- ghosted site pages such as default.aspx
pages loaded in sharepoint document libraries
For pages in sharepoint document library, no server code is allowed by default, unless you change PageParserPaths in web.config. See this blog for details.
For both Application Page and Site Page, you can add server code in one of 3 ways:
- inline code (code render or declartion blocks)
- add user controls, for example: <%@ Register TagPrefix="XXX" TagName="lookup" Src="~/_controltemplates/LookupDefaultValue.ascx" % >
- inherits from code behind. Such as : <%@ Page inherits="CodeBehindDemo" % >. The trick is SharePoint dones't allow either CodeBehind or Src attributes. You have to use dll instead:
controls or methods used in aspx page need to be defined in the code behind with either protected or public access.
for site page, the dll also need to be in the safe control list in web.config.
Another option, less desired, is to use CodeFile attribute in Web Site Project. It requires putting .cs source files into the layouts directory. Some people even developed user controls with CodeFile in layouts or controltemplate and use SmartPart or self-developed webpart loader (loadControl) for web part development.