关于ASP.NET页面与代码分离

如有不明白的地方欢迎加QQ群14670545 探讨

1.我们先创建一个页面看看具体如何:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyWebSiteTest.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </div>
    </form>
</body>
</html>

2.来看它的后台文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MyWebSiteTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }
    }
}

3.下面注意一下WebForm1.aspx页面文件文件的头部Inherits对象,它的值是MyWebSiteTest.WebForm1,再回到后台文件的代码,大的命名空间MyWebSiteTest,然后是个类(后台的代码块是一个类文件)只不过这个类继承的是System.Web.UI.Page,这是所有asp.net的页面的基类。只要是继承于System.Web.UI.Page的类所与所在后台命名空间组合的真题 于 页面头标签属性Inherits的值一致,这样后台代码和前台页面就关联起来了。

不信我们可以将.cs文件的WebForm1改成gggg,然后去<%@ page>标签的Inherits属性的MyWebSiteTest.WebForm1改成MyWebSiteTest.gggg。测试效果是OK的。


4.基于上面的测试,下面我们开始分离

①.新建文件夹CodeDividual,在此文件夹中新建页面DividualPage.aspx,然后将.cs文件删掉只保留.aspx文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DividualPage.aspx.cs" Inherits="MyWebSiteTest.CodeBehind.DividualPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnTest" runat="server" Text="Button" />
    </div>
    </form>
</body>
</html>

②.新建文件夹CodeBehind,在此文件夹中新建一个类DividualPage.cs(当然,这个名字不重要的,自己可以测试下就知道),它的代码如下


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//
using System.Web.UI.WebControls;

namespace MyWebSiteTest.CodeBehind
{
    public class DividualPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("this is the behind code create ");

            //给button按钮添加click事件
            Button modifyBtn = Page.FindControl("btnTest") as Button;
            modifyBtn.Click += new System.EventHandler(btnTest_Click);
        }

        //定义一个名字为btnTest_Click的事件
        private void btnTest_Click(object sender, EventArgs e)
        {
            Response.Write("haha...");
        }
    }
}

到此结束,自己测下吧

ps:推荐看看斯坦福大学的开放视频教学,编程方法学 第五课 ,对于类于对象、实例的讲解非常棒,类就是模板,就是一些东西的综合,就是工厂,它比较抽象,要理解好

你可能感兴趣的:(关于ASP.NET页面与代码分离)