This article is currently in the process of being translated into Vietnamese (~99% done).
CodeBehind
Trong khi ví dụ đầu tiên của chúng ta ổn, không may là nó đã phá vỡ nguyên tắc code của ASP.NET: chia tách markup và code. Như bạn đã chú ý, chúng ta đã thêm một khối script (sử dụng <% %>), nơi chúng ta viết một dòng code C# để sử dụng Label. Điều này ổn khi viết một ví dụ nhỏ, nhưng chúng ta sẽ sớm bị rối tung lên với một đống code C# trộn lẫn với một lượng lớn HTML code. Nếu bạn thêm vào cả JavaScript và CSS nữa, mọi thứ sẽ trở nên hỗn loạn mỗi khi sửa chữa. Đó là lý do MS giới thiệu CodeBehind, một kỹ thuật cho phép bạn tách biệt hoàn toàn markup (HTML, CSS, v..v..) với code (C#, VB.NET etc). Giờ hãy cùng nhau bỏ đoạn script (from <% to %>) và lưu lại.
Như đã nói trước đây, VS có thêm tệp gọi là Default.aspx.cs. Nếu bạn không thể thấy nó trong Solution Explorer thì bạn nhấn vào dấu cộng nhỏ bên trái của tệp Default.aspx. Mở tệp này ra. Bây giờ nếu bạn không làm việc với .NET hay các ngôn ngữ không phải về web trước đây thì sẽ hơi khó. Nó không giống HTML. Tuy nhiên, tôi sẽ thử giải thích các phần khác biệt và ngay sau đó bạn sẽ thấy CodeBehind là một công cụ tuyệt vời để có một cái nhìn tổng quan. Đây là một danh sách hoàn chỉnh về tệp:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
Hiện tại, phần đầu tiên có vẻ không liên quan tới chúng ta. Đó là danh sách các namespace với từ khóa using được dùng trong tệp. Do đây là bài giảng ASP.NET và không phải là bài giảng C#, nên tôi sẽ không giải thích sâu. Tiếp theo, chúng ta có class, Class là một khái niêm trong lập trình hướng đối tượng, rất phổ biến, đặc biệt với ngôn ngữ như Java và C#. Lập trình hướng đối tượng rất phức tạp, và cũng không được giải thích trong bài giảng này.
Tên của class này là "_Default", và dấu : chỉ cho chúng ta thấy lớp này thừa kế từ lớp Page trong namespace System.Web.UI. Điều đó có nghĩa là page của chúng ta có thể làm rất nhiều thứ mà không cần lập trình vì nó thừa kế phương thức và thuộc tính từ lớp khác. Toàn bộ trang ASP.NET thừa kế từ lớp Page hay các lớp khác thừa kế từ lớp Page.
Phương thức duy nhất trong lớp này là Page_Load, được gọi mỗi khi page được tải. Hãy dùng để gán giá trị chuỗi. Chúng ta có thể dùng cùng một dòng code như trước đây nhưng tất nhiên không có các thẻ. Thêm dòng code giữa cặp dấu ngoặc { và } như sau:
HelloWorldLabel.Text = "Hello, world!";
Vậy đó. Chạy chương trình (F5), và quan sát. Trang giống hệt trước đây nhưng chúng ta chỉ dùng CodeBehind lúc đầu. Nhưng ví dụ bắt đầu hơi cũ, nên trong chương sau, chúng ta sẽ xem xét ví dụ thú vị hơn.