Hello, World

โจทย์

    เรามาเริ่มกันที่ Program Hello, World ข้างล่างนี้เป็น source code ของ ASP.NET ไฟล์ที่สร้างขึ้นมาก็ให้ชื่อว่า hello.aspx การทำการในไฟล์นี้ก็ไม่มีอะไรมากให้มันแสดงคำว่า Hello, Word ออกไปที่ browser เท่านั้น ซึ่งไฟล์ที่จะใช้ .NET Framework นั้นจะต้องมีนามสกุลเป็น .aspx

 

Editor

คุณสามารถใช้ text editor ที่ถนัดได้เลย ในบทนี้เราจะยังไม่ใช้ Visual Studio .NET Beta 2 เพราะว่า VS.NET นั้นจะเน้นที่การแทรกโค้ดแบบ code behind ซึ่งเราคงได้พูดถึงต่อไป

 

Hello, World

 

hello.aspx

<%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World
<%@ Page Language="vb"%>
<Script language="vb" runat="server">
	Sub Page_Load(Sender as object, E as EventArgs)
		hello.text = "hello, world"
	End Sub
</Script>
<HTML>
	<HEAD>
		<title>Hello World</title>
	</HEAD>
	<BODY>
		<asp:Label id="hello" runat="server"></asp:Label>
	</BODY>
</HTML>

ขั้นตอนต่อไป ให้นำไฟล์นี้ไปเก็บไว้ที่ web server ซึ่งก็คือ drive:\inetpub\wwwroot เมื่อเสร็จแล้ว สามารถทดลองรันดูได้ ที่ browser โดยการเรียกไฟล์  http://servername/hello.aspx อย่าลืมว่าการเรียกไฟล์ .asp หรือ .aspx จะต้องเรียกผ่าน HTTP เท่านั้น คุณไม่สามารถใช้ File/Open จาก brower ได้

 

อะไรเป็นอะไรในโปรแกรม 

บรรทัดแรกสุดของไฟล์เลย คือ <%@ Page Language="vb"%> โค้ดในส่วนนี้เราจะใช้บอก compiler ว่า ภาษาที่เราใช้ในการเขียน program นั้นคือภาษาอะไร ในที่นี้ ใช้ภาษา VB และนี่ก็เป็นจุดแตกต่างจุดหนึ่งระหว่าง ASP และ ASP.NET

ใน ASP.NET นั้นการทำงานจะไม่เป็นแบบ Interpret อีกต่อไป เราสามารถใช้ VB.NET ตัวเต็มได้เลย และนอกจาก VB.NET แล้ว เราก็ใช้ C# หรือ JScript.NET ก็ได้  การระบุภาษาที่ใช้ในระดับ page นี้มีประโยชน์คือ ภาษาที่ระบุจะเป็น default สำหรับการเขียนโปรแกรมในสคริปต์ที่ไม่ได้ระบุภาษา

 

ถัดลงมาก็เป็น ส่วนของโค้ด <Script></Script> จะเห็นว่า การแทรกโค้ดโปรแกรมนั้นเราสามารถทำได้แบบเดียวกับที่ใช้ใน ASP แต่ส่วนที่ต่างกันก็คือ ในไฟล์นี้เรามี attribute ที่ชื่อว่า runat อยู่ attribute ตัวนี้เราจะใช้บอก ASP.NET ว่า โค้ดในสคริปต์บล็อกนี้จะต้องถูกรันที่ฝั่ง server หรือ client นั่นเอง ถ้าในสคริปต์บล็อกไม่มีการระบุ runat attribute แล้ว ASP.NET จะไม่ยุ่งกับโค้ดส่วนนั้น

 ในสคริปต์บล็อกนี้ก็มี attribute อีกตัวคือ language จะเห็นว่า attribute ตัวนี้จะซ้ำกับ attribute ที่ ระดับ page ที่ ASP.NET ทำเช่นนี้ก็เพื่อว่า เราสามารถใช้ภาษาหลายภาษาปนกันในหนึ่งไฟล์นั่นเอง

 ถัดลงมาก็เป็น HTML โค๊ดที่เราใช้อยู่ทั่วไป คือ <HEAD> และ <BODY> เราจะข้ามส่วนนี้ไปดู tag ที่เขียนว่า

<%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World
<asp:Label id="hello" runat="server"></asp:Label>

Tag นี้คงจะดูแปลกตาไปสำหรับคุณที่คุ้นเคยกับ ASP มาแล้ว นี่คือ tag รูปแบบใหม่คือ ASP Web Form Controls ที่มีใน ASP.NET รายละเอียดนั้นคงละไว้ก่อน เอาไว้เราค่อยมาทำความรู้จักเจ้าตัว Server Controls ให้มากกว่านี้ในบทต่อๆ ไป เอาแบบย่อๆ ก็คือ tag ที่เราเห็นข้างบนนั้นเป็น label control และจะถูก process ที่ฝั่งserver เราสามารถใส่ identity ให้มันโดยใช้ attribute id และ เรียกใช้ property ต่างๆ ของ tag นี้จาก server script ที่เราเขียนได้ เช่น

<%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World <%@ Page Language="vb"%> Hello World
hello.text = "hello, world"

 ในโค้ดนี้เราใส่ค่าให้ property text ของ object ที่ชื่อ hello และ hello นั้นก็เป็น server control ที่เรามีอยู่ที่ page นั่นเอง

 

ไฟล์ apsx หนึ่งไฟล์นั้นจะถือว่าเป็น object ตัวหนึ่งใน ASP.NET และ object นั้นก็ชื่อว่า page object เมื่อมีการ request ขอไฟล์ apsx จาก server นั้น server script จะถูก compiled และ load ในโค้ดนี้เรามีการดัก event Load ของ Page Object นั่นเอง