Click here to Skip to main content
6,595,854 members and growing! (18,718 online)
Email Password   helpLost your password?
Web Development » ASP.NET » General     Intermediate

Inline (Single File) vs. CodeBehind

By Neil de Weerdt

There are a few differences in the processing of code-behind and single-file pages.
C#, Windows, .NET 1.0, .NET 1.1, ASP.NET, VS.NET2003, Dev
Posted:2 Sep 2004
Views:106,529
Bookmarked:24 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
8 votes for this article.
Popularity: 3.39 Rating: 3.75 out of 5
2 votes, 25.0%
1
1 vote, 12.5%
2

3
3 votes, 37.5%
4
2 votes, 25.0%
5

Introduction

Well, to start, I used a lot of Quotes from MSDN. I think they can explain things better than me, so let's start.

Although Microsoft� Visual Studio� .NET makes it easy to create and work with Web Forms pages using the ASP.NET code-behind model, you might find yourself working with single-file Web Forms pages by circumstance or by preference. This article gives an overview of the differences between the two models, describes how to work with single-file Web Forms pages in Visual Studio, and shows you how to convert single-file .aspx pages to code-behind Web Forms pages.

There are a few differences in the processing of code-behind and single-file pages.

Code Behind Single File
The HTML and controls are in the .aspx file, and the code is in a separate .aspx.vb or .aspx.cs file. The code is in <script> blocks in the same .aspx file that contains the HTML and controls.
The code for the page is compiled into a separate class from which the .aspx file derives. The .aspx file derives from the Page class.
All project class files (without the .aspx file itself) are compiled into a .dll file, which is deployed to the server without any source code. When a request for the page is received, then an instance of the project .dll file is created and executed. When the page is deployed, the source code is deployed along with the Web Forms page, because it is physically in the .aspx file. However, you do not see the code, only the results are rendered when the page runs.

[Quote MSDN: Working with Single-File Web Forms Pages in Visual Studio .NET]

Using the code

My personal preference is Code Behind. Most free ASP.NET hosting servers don�t allow Code Behind, not sure why, yet.

What I sometimes do is I write a base class, which derives from Page class, and all my pages derive from my base class. But on a Single File Web Form, it derives from the Page class. So, this limits you to create your own base derived class.

Let's start off with a simple app that uses Code Behind and convert that into Single File.

  1. Open an existing project, or create a new ASP.NET Web application.
  2. On the Project menu, click Add HTML Page.
  3. Name the new page with the .aspx extension, for example, SingleForm1.aspx.
  4. Design the form.
  5. When your form works in code behind now, we can move it to a Single File.
  6. Change your design view to HTML.
  7. Replace your Page directive with:
    <%@ Page language="c#" %>
  8. Between the <Head></Head> tags, add the following code:
    <Head>
       <script language="CS" runat="server"></script>
    </Head>
  9. Copy and paste your Code Behind code in between the <script> tags.

    Note that I don't have any private / public / ... modifier.

    <Head>
      <script language="CS" runat="server">
        void Page_Load(object sender, System.EventArgs e) 
        {
          // Put user code to initialize the page here 
    
        } 
        void btnLogon_Click(object sender, System.EventArgs e) 
        { 
          this.txtUserID.Text = "Logon"; 
          this.txtPassword.Text = ""; 
        }
      </script>
    </Head>
  10. Now. we need to �Register� the event. Due to the fact the I could find the InitializeComponent method, I registered my events in the Page_Load.

    <Head>
     <script language="CS" runat="server">
       void Page_Load(object sender, System.EventArgs e) 
       { 
         // Put user code to initialize the page here
    
             this.btnLogon.Click +=  
               new System.EventHandler(this.btnLogon_Click);
       } 
       void btnLogon_Click(object sender, System.EventArgs e) 
       { 
         this.txtUserID.Text = "Logon";
         this.txtPassword.Text = "";
       }
     </script>
    </Head>
  11. There we go.

Now how do I use classes in inline code???

  1. Well to start off, you can create a .cs file where your class code is declared.
  2. Between the <Head></Head> tags, add the following code:
    <Head>
        <script language="cs" runat="server" src= "MySource.cs"/>
      <script language="CS" runat="server"></script>
    </Head>
  3. Note that in your source file, you don�t include the namespace. You only declare the class:
     public class MyClass1 { }
     public class MyClass2 
     { 
        protected int Index = 0; 
        public MyClass2()
        { 
        } 
     } 
     public class MyClass3 : System.Collections.CollectionBase
     { 
        public int this[int Index] 
        { 
            get 
            { 
                return (int)List[Index];
            } 
            set 
            { 
                List[Index] = value;
            } 
        } 
    }
  4. And you use it the same as what you would have in code behind.
    <Head>
        <script language="CS" runat="server">
            void Page_Load(object sender, System.EventArgs e)
            { 
                // Put user code to initialize the page here
    
                     this.btnLogon.Click += 
                  new System.EventHandler(this.btnLogon_Click);
                MyClass3 class3 = new MyClass3();
                class[0] = "Test";
            } 
            void btnLogon_Click(object sender, System.EventArgs e)
            { 
                this.txtUserID.Text = "Logon"; 
                this.txtPassword.Text = "";
            }
        </script>
    </Head>

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Neil de Weerdt


Member

Occupation: Web Developer
Location: South Africa South Africa

Other popular ASP.NET articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 12 of 12 (Total in Forum: 12) (Refresh)FirstPrevNext
Questiontool for converting inline to codebhind and vs PinmemberHillerstrom Conssulting22:54 24 Jan '06  
AnswerRe: tool for converting inline to codebhind and vs PinmemberNeil de Weerdt20:56 26 Jan '06  
GeneralRe: tool for converting inline to codebhind and vs Pinmemberjsllvn7:17 3 Feb '06  
Generaluse both inline code and code-behind code simultaneously - even in different langauages Pinmembersbyard3:08 17 Dec '04  
GeneralRe: use both inline code and code-behind code simultaneously - even in different langauages PinmemberNeil de Weerdt21:07 26 Jan '06  
GeneralMore discussion....please PinmemberJOlson8:38 10 Sep '04  
GeneralNew Model in asp.net 2.0 PinmemberKarl Seguin15:48 8 Sep '04  
Generalcode behind without dll PinmemberAshley van Gerven1:52 4 Sep '04  
GeneralRe: code behind without dll PinmemberKastellanos Nikos4:59 8 Sep '04  
GeneralRe: code behind without dll PinmemberAlberto Venditti23:46 8 Sep '04  
GeneralRe: code behind without dll PinmemberKastellanos Nikos1:13 9 Sep '04  
GeneralRe: code behind without dll PinmemberNeil de Weerdt2:20 9 Sep '04  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 2 Sep 2004
Editor: Smitha Vijayan
Copyright 2004 by Neil de Weerdt
Everything else Copyright © CodeProject, 1999-2009
Web10 | Advertise on the Code Project