Kỹ thuật thiết kế web application linh động và load động user

Một phần của tài liệu tìm hiểu và xây dựng hệ thống framwork hỗ trợ các hình thức trắc nghiệm (Trang 153 - 155)

control

Bình thường, khithiết kế web, đa phần trongchúng ta đều thiếtkế theo kiểu: mỗi khi cần một trang web, chúng ta tạo ra một file aspx. Đó thật sự là một trang web. Tuy nhiên, giả sửkhi chúng tacần thayđổi style củacả website thìsao!. Lúc ấy, chúng ta phải đi đến từng trang aspx, sửa những vị trí màu sắc, font chữ trực tiếp hoặc trong các style được định nghĩa, hoặc ít nhất thì cũng phải là sửa đường dẫnđếnfileđịnhkiểucss.

Nhưvậy,cáchthiếtkếnhưvậytỏracónhiềubấttiệnvàtiêutốnrấtnhiềuthờigian. Thay vào đó, chúng ta nên thiết kế theo hướng sau:

o Cả website sẽ chỉ có một vài trang web thật sự, tứclà chỉ có 3 hay 4 tran

g

aspx thật sự mà thôi. Các trang web này sẽ đóng vai trò là các cổng vào trung tâm cho trang web.

o Mỗikhithêmmột chứcnăng gìcócần đếnviệcthêm mộttrangweb, thayv

ì

thêmvàomộttrangwebthậtsự,chúngtathêmvàomộtusercontrol.

o Trên trang web thật, trong liên kết đến chức năng này, chúng ta để nó liên kết đến chính nó với tham số module là chỉ đến user control chúng ta cần.

o Sau đó, chúng ta sẽthực hiệnviệc load độngcác usercontrol này. Nếuuse

r

control này là một phần của project đang thực hiện, chúng ta chỉ việc dùng lệnh LoadControl và truyền vào đường dẫn đến file ascx (file user control) mà ta cần. Nếu user control này được phát triển trong một project khác, ngoài việc trên, chúng ta còn cần chép file dll xử lý (nếu có) của user control vào thư mục bin của ứng dụng web.

o SaukhigọihàmLoadControl,chúngtađượctrảvềmộtđốitượngControl. o Trongtrangwebaspx,tacóthểdùngmộtđốitượngnàođólàmplaceholder,

thông thường là một cell của một table. Cell này được đặt thuộc tính là runat=servervàid=”tênplaceholder”, giảsửđượcđặtlàplaceHolder.

122

o KhilấyđượcđốitượngControlrồi,tagọitiếplệnh: placeHolder.Controls.Add (myControl);

o Như vậy,tađãhoànthành việcloadđộngcáccontrolvào websitecủa chúng ta thông qua trang web với vai trò là cổng thông tin.

Codeminhhọa:

string module = Request.QueryString["module"]; string filename = "UserControls/";

{ case "news": filename += "NewsListContainer.ascx"; break; case "createnews": filename += "CreateNews.ascx"; break; case "viewnewsdetail": filename += "NewsDetail.ascx"; break; case "sampletest": filename += "ViewSampleQuestion.ascx"; break; case "testlist": filename += "CustomTestList.ascx"; break; case "configui": filename += "ConfigUI.ascx"; break; } default: filename += "DefaultControlPage.ascx"; break; UserControl ctrl = (UserControl)LoadControl(filename); MainPlaceHolder.Controls.Clear(); MainPlaceHolder.Controls.Add(ctrl); 123

Một phần của tài liệu tìm hiểu và xây dựng hệ thống framwork hỗ trợ các hình thức trắc nghiệm (Trang 153 - 155)