بررسی مفهوم Codebehind و مزایا و نحوه بکارگیری و پیاده سازی آن به سه روش مختلف:
Codebehind اصطلاحی است که به مجموعه کدهای برنامه ای که یک فرم وب (یا سرویس وب یا کنترل کاربری یا دیگر اشیاء ASP.NET) استفاده می کند می گویند. این کدها درون فایل ASPX (یا ASMX یا ASCX) نبوده بلکه درون فایل دیگری با پسوند aspx.cs-برای #C (برای VB.NET بصورت aspx.vb) قرار می گیرند. جداسازی کد برنامه از عبارات HTML در یک فرم وب دارای محاسن و مزیتهای بسیار زیادی است. برخی از این مزیتها عبارتند از:
• امکان جداسازی تیمهای تولید یک سایت وب بدین صورت که طراحان صفحات می توانند بدون آنکه کاری به کدهای برنامه صفحه داشته باشند یا آسیبی به آن برسانند با عبارات HTML مربوطه کار کنند.
• حفاظت و امنیت برنامه
• پشتیبانی بسیار خوب محیط VS.NET (ویژوال استودیو دات نت) از این مفهوم
• سرعت تولید سایتهای وب
• نگهداری آسان سایتها و برنامه های ایجاد شده

VS.NET تقریبا هیچگونه امکاناتی را جهت استفاده از بلوکهای <Script runar="server"> که مفهوم مقابل Codebehind است را ندارد.

حال که با مزایای Codebehind آشنا شدیم، سوال بعدی این است که این مفهوم چگونه کار می کند؟ در ASP.NET همه چیز شئ یا object می باشد. در ASP.NET حتی یک صفحه ASPX بدون هرگونه کد و برنامه هم یک شئ می باشد که از کلاس System.Web.UI.Page به ارث گرفته شده است. هنگامی که صفحه مذکور برای اولین بار فراخوانی (اجرا) می شود محتویات آن صفحه توسط هسته ASP.NET کامپایل شده و نسخه کامپایل شده آن تا زمانی که تغییری در صفحه ایجاد نشده است، جهت فراخوانی های بعدی در سیستم cache می شود.

از آنجا که یک صفحه ASPX بصورت شئ عمل می کند لذا ما می توانیم بخوبی از مفهوم وراثت در برنامه نویسی شئ گرا بهره ببریم. بدین صورت که می توانیم کلاس پدر آن را بطور دلخواه تعریف و پیاده سازی کنیم بشرطی که این کلاس پدر خود بنوعی از کلاس System.Web.UI.Page به ارث گرفته شده باشد.

کلاس Codebehind:
بجای اینکه صفحه ASPX شما مستقیما از کلاس System.Web.UI.Page به ارث گرفته شود، صفحه شما می تواند از یک کلاس دلخواه دیگر بصورت زیر به ارث گرفته شود:

<%@ Page Inherits="YourNamespace.NewPage" %>
بمنظور عمل نمودن عبارت فوق، کلاس NewPage باید بصورت مستقیم یا غیر مستقیم از کلاس System.Web.UI.Page به ارث گرفته شده باشد. هنگام فراخوانی صفحه فوق، هسته ASP.NET در شاخه bin یا اسمبلی سراسری cache شده (Global Assembly Cache) بدنبال کلاس NewPage می گردد و در صورتیکه آن را پیدا نکند خطائی را اعلام می کند. با استفاده از این روش می توان یک کلاس پایه بدین منظور در سراسر یک برنامه یا سایت وب داشت بطوریکه همه صفحات از آن کلاس به ارث گرفته شوند. بعنوان مثال مجله الکترونیکی AngryCoder از همین روش استفاده کرده است. بهرحال بیشتر برنامه ها از کلاس های متفاوتی جهت کلاس Codebehind صفحات خود استفاده می کنند.

شما می توانید فایلی را که محتوی Codebehind شماست را به هسته ASP.NET معرفی کنید. این معرفی سبب می شود که ASP.NET خود بقیه کارهای لازم (کامپایل کردن فایل codebehind و قرار دادن حاصل آن که در اصل یک فایل dll است در شاخه bin برنامه) را انجام دهد. این کار را با استفاده از مشخصه Src بصورت زیر می توانید انجام دهید:

<%@ Page Src="NewPage.aspx.cs" Inherits="YourNamespace.NewPage" %>
اگر از VS.NET استفاده می کنید بصورت پیش فرض مقدمات استفاده از codebehind برای شما بصورت زیر فراهم شده است:

<%@ Page Codebehind="NewPage.aspx.cs" Inherits="YourNamespace.NewPage" %>
VS.NET کلیه فایلهای Codebehind را در قالب یک فایل dll یا اسمبلی کامپایل کرده و حاصل را در شاخه bin موجود در شاخه اصلی برنامه یا سایت قرار می دهد. دقت داشته باشید که الویت مشخصه Src از مشخصه Codebehind بالاتر است و در صورت استفاده همزمان از آنها در دایرکتیو Page، فایل معرفی شده در عبارت Src بعنوان فایل Codebehind در نظر گرفته می شود.

خلاصه:
با توجه به مطالب فوق، سه روش جهت معرفی Codebehind وجود دارد. روش اول بدین صورت است که با فرض موجود بودن dll مربوطه در شاخه bin، تنها به ذکر نام کلاس codebehind در عبارت Inherits اکتفا نمائیم. روش دوم استفاده از مشخصه Src جهت معرفی نام فایل Codebehind است. این روش سبب می شود تا ASP.NET با استفاده از کامپایلر JIT محتوای فایل Codebehind را قابل استفاده نماید. روش سوم که روش VS.NET است از مشخصه Codebehind استفاده می کند. این روش همانند روش اول است با این تفاوت که خود VS.NET کلیه کارهای لازم را بصورت خودکار برای ما انجام می دهد.