03. コードの分離

トップどんと来い! ASP.NET > 03. コードの分離

コードビハインド

ASP.NET ではコードを必ずしも同じファイルに記述しておく必要はありません。
コード部分が長くなる場合は、コードを分離させて単独のファイルとすることも可能です。
// TRICK.cs

using System; ---(1)
using System.Web.UI;
using System.Web.UI.WebControls;

public class TRICK : Page ---(2)
{
public Button Button1;
public TextBox TextBox1;

public void Button1_Click(object sender, EventArgs e) {
TextBox1.Text = "TRICK is wonderful!!";
}

}
(1) ネームスペース
C# コードファイルに分離させる場合は、ネームスペース(名前空間)の宣言が必要になります。

(2) public class
コードを分離させる場合は、外部から呼び出すため、public 指定になり、class を明示する必要があります。
<!-- TRICK.aspx -->
<%@ Page Src="TRICK.cs" Inherits="TRICK" %> ---(1)
<html>
<body>
<form runat="server">
<p>
<asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Click">
</asp:Button>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<!-- コンテンツをここに配置してください。 -->
</p>
</form>
</body>
</html>
(1) Src="ソースファイル"  Inherits="クラス名"
ソースを分離する場合は、Language 指定がいらない代わりに Src (ソースファイル) と Inherits (クラス名) が必要になります。

このようにコードを分けて記述することを、「コードを隠す」という意味で「コードビハインド」 と呼びます。

先にコンパイルする

さらにさらに、ASP.NET はあらかじめローカルで[ .dll ]としてコンパイルしておき、ホストの /bin に入れます。
(コンパイル)
>csc /t:library TRICK.cs

ここで私が何日間か悩んだのが、bin ディレクトリです。

私が悩んでいたのは「.aspx と同じディレクトリの bin」に入れると勘違いしていた ためです。
そうではなく、
http://dokugaku.europe.webmatrixhosting.net/
これなら、
http://dokugaku.europe.webmatrixhosting.net/bin/
ここに入れるということに気づくのにいくらかかったことか! これも「独学」ならではのミスですが、私と同じようなミスをするといけないのでここに明記しておきました。

また、コンパイルをしないコードビハインドからの移行は[ .aspx ]の1行目の Src 要素を削除することで移行は終わりです。

私が思うに、あらかじめコンパイルしておくほうが、サーバで実行するよりも早いと思うのですがどうなんでしょうか?
それとも、コードビハインドにしないほうが早いのでしょうか?

いずれにしても、WebMatrix ではコードビハインドを採用していないため、インラインコードすなわちコードも一緒に入った形で「ど んと来い」を進めます。

(補足)
ソースファイル名は「aspxファイル名.aspx」とするのが慣例であり、「Test.aspx.cs」などのようにしますが、ここではファイル名は関係ないことを実証するために「.aspx」をのけてやっています。