asp.net 1.x中的Code-Behind技术在asp.net2.0中变为Code-Beside。
以前用Code-Behind实现HTML和应用逻辑分离,HTML被保存在aspx文件中,用c#(vb.net)编写的程序被放在.cs(.vb)文件中;两个文件被单独编
译成两个Class,且aspx的Class继承于.cs(.vb)编译生成的Class。若要在网页上调用后台的方法如下:
helloWorld.aspx
<%@ Page language="c#" Codebehind="helloWorld.aspx.cs" AutoEventWireup="false" Inherits="MY.helloWorld" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Image</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<# % SayHello() %>
</form>
</body>
</HTML>
helloWorld.cs
using System;
namespace MY
{
public class helloWord: System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlForm Form1;
private void Page_Load(object sender, System.EventArgs e)
{
}
public string SayHello()
{
return "hello";
}
}
}
在页面上使用后台的方法,必须将后台的方法设置成public类型的;
Code-Beside应用了,Partial Class特性。Partial Class是什么呢?在网站查到:
--------------
partial classes:局部类型
partial 类型可以使我们把对某个类的描述写在不同地方,甚至写到两个或多个不同的文件中去。partial 信息只对编译器有用,编译器在编译时
看到对某个类的描述是“碎”的(partial 的),它会去其他地方收集该类的其他碎片,然后把所有的该类的碎片组合成完整的一个类,再对其编
译。所以partial 体现不到编译好的 IL中去的。
---------------
因为在asp.net中类可以跨文件了,ms这样出处理了aspx页面和code的关系,虽然依旧是将HTML和逻辑code分别写在2个文件,但是在编译的
时候,只生成一个Class。页面可以使用后台的方法,字段,无论是public还是private的都可以。
不是所以的.net语言都支持Code-Beside模式,c#和vb.net可以,j#不行,因为j#不支持partial classes语法。