65.9K
CodeProject 正在变化。 阅读更多。
Home

内联(单文件)与代码后置

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.15/5 (12投票s)

2004年9月3日

3分钟阅读

viewsIcon

257241

代码后置页面和单文件页面在处理方式上存在一些差异。

引言

首先,我使用了大量来自 MSDN 的引用。 我认为它们可以比我更好地解释事情,所以让我们开始吧。

尽管 Microsoft® Visual Studio® .NET 使使用 ASP.NET 代码后置模型轻松创建和处理 Web Forms 页面,但您可能会因环境或偏好而使用单文件 Web Forms 页面。 本文概述了这两种模型之间的区别,描述了如何在 Visual Studio 中处理单文件 Web Forms 页面,并向您展示了如何将单文件 .aspx 页面转换为代码后置 Web Forms 页面。

代码后置页面和单文件页面在处理方式上存在一些差异。

代码后置 单文件
HTML 和控件位于 .aspx 文件中,代码位于单独的 .aspx.vb.aspx.cs 文件中。 代码位于包含 HTML 和控件的同一个 .aspx 文件中的 <script> 代码块中。
页面的代码被编译成一个单独的类,.aspx 文件从中派生。 .aspx 文件派生自 Page 类。
所有项目类文件(不包括 .aspx 文件本身)都被编译成一个 .dll 文件,该文件被部署到服务器而无需任何源代码。 收到页面请求时,会创建一个项目 .dll 文件的实例并执行。 部署页面时,源代码会与 Web Forms 页面一起部署,因为它实际位于 .aspx 文件中。 但是,您看不到代码,只有在页面运行时才会呈现结果。

[引用 MSDN:在 Visual Studio .NET 中使用单文件 Web Forms 页面]

使用代码

我个人更喜欢代码后置。 大多数免费的 ASP.NET 托管服务器不允许代码后置,还不知道为什么。

我有时会编写一个基类,该基类派生自 Page 类,而我的所有页面都派生自我的基类。 但是在单文件 Web Form 上,它派生自 Page 类。 因此,这限制了您创建自己的派生基类。

让我们从一个使用代码后置的简单应用程序开始,并将其转换为单文件。

  1. 打开一个现有项目,或创建一个新的 ASP.NET Web 应用程序。
  2. 在“项目”菜单上,单击“添加 HTML 页面”。
  3. 使用 .aspx 扩展名命名新页面,例如 SingleForm1.aspx
  4. 设计表单。
  5. 当您的表单现在在代码后置中工作时,我们可以将其移动到单文件。
  6. 将您的设计视图更改为 HTML。
  7. 将您的 Page 指令替换为
    <%@ Page language="c#" %>
  8. <Head></Head> 标签之间,添加以下代码
    <Head>
       <script language="CS" runat="server"></script>
    </Head>
  9. 将您的代码后置代码复制并粘贴到 <script> 标签之间。

    请注意,我没有任何 private / public / ... 修饰符。

    <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. 现在。 我们需要“注册”事件。 由于我找不到 InitializeComponent 方法,因此我在 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. 这就完成了。

现在,如何在内联代码中使用类?

  1. 首先,您可以创建一个 .cs 文件,在其中声明您的类代码。
  2. <Head></Head> 标签之间,添加以下代码
    <Head>
        <script language="cs" runat="server" src= "MySource.cs"/>
      <script language="CS" runat="server"></script>
    </Head>
  3. 请注意,在您的源文件中,您不包含命名空间。 您只声明类
     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. 您以与代码后置中相同的方式使用它。
    <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>
© . All rights reserved.