Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
2,02 MB
Nội dung
1 Nguyễn Ngọc Bình Phương - Lê Trần Nhật Quỳnh Thái Kim Phụng - Lê Ngọc Sơn - Trần Thế Qn - Nguyễn Hồng Thanh Nhàn Nguyễn Ngọc Bình Phương - Lê Trần Nhật Quỳnh Thái Kim Phụng - Lê Ngọc Sơn - Trần Thế Quân - Nguyễn Hoàng Thanh Nhàn Chịu trách nhiệm xuất bản: Hồng Chí Dũng Biên tập: Nguyễn Văn Nam Thiết kế bìa: Vũ Xuân Cường Chế & Sửa in: Nguyễn Ngọc Bình Phương Sách Đất Việt – DVPUB Địa chỉ: 225 Nguyễn Tri Phương, Quận 5, TP Hồ Chí Minh Điện thoại: (08) 652 039 - E-mail: datviet@dvpub.com.vn Website: http://dvpub.com.vn (hay http://dvpub.vn) Nguyễn Ngọc Bình Phương - Lê Trần Nhật Quỳnh Thái Kim Phụng - Lê Ngọc Sơn - Trần Thế Quân - Nguyễn Hoàng Thanh Nhàn TẬP HAI http://dvpub.com.vn/dv/details.aspx?itemid=371 http://codeprovn.com/forums/viewtopic.php?p=283 NHÀ XUẤT BẢN HỒNG ĐỨC LỜI NÓI ĐẦU C ác giải pháp lập trình ASP.NET 2.0 sách hồn hảo cho muốn tìm hiểu nhanh tính cơng cụ phiên 2.0 ASP.NET Bạn đọc sách viết theo lối truyền thống, nhiều thời gian để nghĩ xem phải làm để viết phần mềm cho trò Nhưng sử dụng sách này, bạn hiểu thử nghiệm dự án vô thiết thực thời gian ngắn ASP.NET 2.0 cơng nghệ “nóng”, kế tục cải tiến mạnh so với phiên 1.1, nhờ vào số tính hấp dẫn nhắm đến việc trang bị cho nhà phát triển web công cụ cần cho phần lớn dự án Các công cụ bao gồm điều kiểm đăng nhập mới, cho phép nhà phát triển nhanh chóng kéo thả điều kiểm lên bề mặt thiết kế, thiết lập vài thuộc tính, có hệ thống bảo mật Một tính khác cải tiến cho giao diện người dùng lúc thiết kế nhằm kết điều kiểm liệu Các điều kiểm hấp hấp dẫn khác tồn tại, mục tiêu sách Chúng ta dừng lại số thay đổi kiến lập ASP.NET 2.0, bao gồm kiến trúc website, tốc độ yêu cầu trang, việc quản lý thơng tin có trạng thái, hiệu phát triển toàn diện Nếu bạn chọn ASP.NET 2.0, nỗ lực lập trình bạn dễ dàng nhiều Sách lý tưởng cho lập trình viên có kinh nghiệm với NET muốn tìm hiểu cơng nghệ Bất kỳ có kinh nghiệm với NET 1.1 thực giải pháp quy mơ tồn phần ứng viên hoàn hảo để lĩnh hội tất tư liệu sách Bạn có hiểu biết tổng quát cách làm việc sở liệu bản, với kinh nghiệm việc phát triển phần mềm để truy xuất đối tượng sở liệu, chẳng hạn thủ tục tồn trữ Lối tiếp cận hay người đọc tìm chương mà quan tâm nhảy đến Khơng kiến thức bị đọc theo lối cảm hứng Điều có nghĩa sách hướng dẫn hữu ích sách tra cứu nhanh nhằm đào sâu mã lệnh học thật nhanh Các chương hoàn toàn độc lập thực khác với nhiều tính trùng lắp Một số chương lặp lại khái niệm cho quy trình rườm rà, số chương lệch hướng khỏi tính lối sử dụng quán nhằm cung cấp lối tiếp cận bình thường cho đòi hỏi đặc trưng website Trong số trường hợp cần lý giải đầy đủ đề tài thảo luận, bạn nhận thấy có chương trước mơ tả đề tài cách chi tiết Sách bao gồm 12 dự án bạn sử dụng với cài đặt Mỗi dự án có dẫn cài đặt mã nguồn vào máy cục Mục tiêu chương mã lệnh dự án kèm giúp bạn hiểu nhanh chóng hiệu chỉnh dự án để cải tiến hay thực số tính Qua học lặp lặp lại, bạn biết nhiều lối thiết kế tạo dự án phiên 2.0 ASP.NET Sách khảo sát số tiến vượt bậc từ phiên 1.1, không mức chi tiết Hầu hết mã lệnh tư liệu “cân đo” với mục đích lý giải khái niệm phiên 2.0 cách trọn vẹn Chúng xin chân thành cảm ơn bạn Thái Thanh Phong, Đinh Phan Chí Tâm, Nguyễn Quang Nam, Võ Kinh Luân có đóng góp quý báu cho sách; cảm ơn Nhà xuất Hồng Đức Nhà sách Đất Việt tạo điều kiện cho sách đến với bạn đọc Mặc dù cố gắng trình biên soạn, thiếu sót điều khó tránh khỏi Rất mong nhận ý kiến đóng góp nhận xét bạn để lần tái sau hoàn thiện Trân trọng CÁC TÁC GIẢ MỘT SỐ CHỈ DẪN ■Cấu trúc sách Quyển sách thiết kế giống tài liệu tham khảo cho dự án mã nguồn mở Hầu hết lập trình viên khơng cần hấp thụ thơng tin chủ đề cụ thể theo kiểu truyền thống; mà nhiều lập trình viên tìm thấy câu trả lời mã lệnh, đọc nội dung hay tư liệu kèm theo Quyển sách nhắm đến việc thỏa mãn khuynh hướng đó, chủ đề khái niệm truyền đạt từ đến nâng cao, xuyên suốt 12 dự án tương ứng với 12 chương sau: TẬP MỘT Chương ONLINE DIARY Chương FILE SHARE Chương CHAT SERVER Chương SURVEY ENGINE Chương BLOG Chương PHOTO ALBUM TẬP HAI Chương CMS Chương CUSTOMER SUPPORT Chương WEBSHOP Chương 10 APPOINTMENT BOOKING Chương 11 GREETING CARD Chương 12 BUGBASE Cấu trúc chương tuân theo khuôn mẫu chung sau: Sử dụng ứng dụng, Thiết kế ứng dụng, Mã lệnh ứng dụng, Cài đặt ứng dụng, Mở rộng ứng dụng Mỗi dự án thiết kế với module, file lớp, điều kiểm tái sử dụng Các lớp file quan trọng nêu phân tích chi tiết chương Các chương 4, 6, đề cập chủ đề quen thuộc dễ tiếp cận; chương 3, 10, 12 đề cập chủ đề nâng cao, chắn bạn học nhiều thứ từ Kết thúc học, bạn tự tạo cho website, thực chế bảo mật với kiến trúc có tổ chức, sử dụng điều kiểm kết liệu hiệu hơn, chế kết liệu dựa vào đối tượng, nhiều tính khác ■Quy ước font chữ Quyển sách sử dụng quy ước font chữ sau: Font Tahoma—Dùng cho tên riêng, tên file thư mục, đường dẫn, nhãn, liên kết, để nhấn mạnh Font Lucida Sans Typewriter—Dùng cho nội dung file; phần tử sở liệu (như bảng, khung nhìn, thủ tục tồn trữ, truy vấn, trường, kiểu liệu); đoạn chương trình phần tử mã lệnh (như khơng gian tên, lớp, kiểu, hàm, thủ tục, phương thức, thuộc tính, đặc tính, tham số, biến, giá trị, đối tượng, thể hiện, kiện, thẻ XML thẻ HTML) ■Yêu cầu hệ thống Để chạy ứng dụng trình bày sách này, bạn cần phần mềm sau đây: Microsoft NET Framework 2.0; Microsoft Visual Studio 2005 hay Visual Web Developer 2005 Express Edition; Windows 2000 Professional/Server SP4, Windows XP Professional SP2, Windows Server 2003 SP1, Windows Vista (Home Premium/Business/Ultimate), hay Windows Longhorn Server; Microsoft SQL Server 2005 Express Edition (hay đầy đủ); Microsoft Internet Information Services (IIS) Yêu cầu tổi thiểu phần cứng vi xử lý 600 MHz, RAM 192 MB Bạn cần khoảng GB dung lượng đĩa cứng trống để cài đặt Visual Studio 2005 thư viện MSDN Những giá trị mức tối thiểu, trình phát triển dễ dàng hệ thống với vi xử lý cao, dung lượng RAM lớn đĩa cứng trống nhiều Bạn hướng dẫn cài đặt Microsoft Internet Information Services 7.0 Visual Studio 2005 Professional Edition phụ lục A, “Một số vấn đề liên quan đến IIS7 VS2005” ■Sử dụng CD-ROM đính kèm CD-ROM đính kèm theo sách chứa tồn mã nguồn, gói cài đặt cho ứng dụng trình bày sách Thư mục gốc CD-ROM gồm ba thư mục: Websites—Chứa toàn mã nguồn ứng dụng, PrecompiledWebsites—Chứa ứng dụng biên dịch, WebSetupProjects—Chứa dự án cài đặt ứng dụng, AJAX—Chứa thành phần giới thiệu phụ lục C AppendixD—Chứa website minh họa kỹ thuật giới thiệu phụ lục D Ba thư mục đầu có cấu trúc giống nhau, gồm sáu thư mục ứng với sáu ứng dụng trình bày tập hai này: CMS—Hệ thống quản lý nội dung, CustomerSupport—Hệ thống hỗ trợ khách hàng, WebShop—Cửa hàng trực tuyến, AppointmentBooking—Hệ thống đăng ký trực tuyến, GreetingCard—Thiết kế thiệp trực tuyến, BugBase—Hệ thống theo dõi lỗi Bạn có hai tùy chọn cài đặt ứng dụng: Nếu muốn cài đặt ứng dụng gói cài đặt, chạy file WebSetupProjects\xyz\Debug\xyz.msi (xyz tên ứng dụng) Như thế, ứng dụng cài đặt vào Internet Information Services (IIS) Nếu muốn cài đặt ứng dụng tay, chép thư mục Websites\xyz\ vào đĩa cứng Như thế, bạn mở chỉnh sửa ứng dụng Visual Studio 2005 (hay Visual Web Developer) Bạn dẫn hai tùy chọn cài đặt chương Bạn không cần chép thư mục PrecompiledWebsites WebSetupProjects vào đĩa cứng, bạn biết cách tạo hai thư mục phụ lục A, “Một số vấn đề liên quan đến IIS7 VS2005” Nếu khơng đọc nội dung CD-ROM đính kèm, bạn tải từ http://codeprovn.com/forums/viewtopic.php?p=283 trực tiếp liên hệ với Nhà sách Đất Việt (225 Nguyễn Tri Phương, Quận 5, TP Hồ Chí Minh) để nhận CD-ROM khác 10 88 Chương Customer Support Protected Sub lstCategoryLevel2_SelectedIndexChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles lstCategoryLevel2.SelectedIndexChanged If Not lstCategoryLevel2.SelectedValue = “” Then ‘ Hiển thị danh sách thả xuống thứ ba lstCategoryLevel3.Visible = True ‘ Kết odsDownloads cho danh sách thả xuống Dim myParam As ControlParameter = _ CType(odsDownloads.SelectParameters(0), ControlParameter) myParam.ControlID = “lstCategoryLevel2” lstCategoryLevel3.DataBind() Else Dim myParam As ControlParameter = _ CType(odsDownloads.SelectParameters(0), ControlParameter) myParam.ControlID = “lstCategoryLevel1” lstCategoryLevel3.Visible = False End If End Sub Mã lệnh thực thi bạn có lựa chọn khác danh sách thả xuống thứ hai Bên phương thức thụ kiện SelectedIndexChanged danh sách thả xuống đó, SelectedValue kiểm tra N ếu có giá trị (tức có chủng loại hợp lệ chọn), SelectParameter ObjectDataSource thay đổi động thành danh sách thả xuống thứ hai: Dim myParam As ControlParameter = _ CType(odsDownloads.SelectParameters(0), ControlParameter) myParam.ControlID = “lstCategoryLevel2” Dòng mã lấy tham chiếu đến SelectParameter thứ điều kiểm nguồn liệu (tham số thứ hai tham số đầu sử dụng để xác định có mNu tin trả từ sở liệu) Tập SelectParameters trả đối tượng Parameter tổng quát, CType sử dụng để ép kiểu ControlParameter Khi myParam chứa ControlParameter, bạn truy xuất thuộc tính ControlID gán cho ID danh sách thả xuống thứ hai Điều làm cho ObjectDataSource lấy SelectedValue từ danh sách thả xuống thứ hai, truyền cho SelectMethod (phương thức GetDownloadList lớp Download) Phương thức làm cho DataList hiển thị download ứng với chủng loại chọn N guyên lý lặp lại cho danh sách thả xuống thứ ba thứ Theo cách này, bạn đảm bảo DataList ln hiển thị mNu tin ứng với chủng loại chọn danh sách thả xuống bị tác động sau Ví dụ cho thấy điều kiểm mã đánh dấu trang thiết lập cứng Bạn dễ dàng hiệu chỉnh điều kiểm lúc thực thi mã lệnh kiện phương thức code-behind Điều hữu ích bạn muốn thay đổi hành vi trang lúc thực thi Phần cuối trang Downloads mà bạn cần xem kiện Selected điều kiểm odsDownloads Sự kiện phát sinh điều kiểm hoàn tất việc thu lấy liệu từ nguồn liệu nơi lý tưởng để hiển thị thơng báo cho người dùng biết có mNu tin trả từ sở liệu Phương thức GetDownloadList lớp Download có tham số đầu (được định từ khóa ByRef) trả số lượng mNu tin cho mã lệnh gọi Bên kiện Selected nguồn liệu, tham số đầu thu lấy từ tập hợp OutputParameters đối số ObjectDataSourceStatusEventArgs: Protected Sub odsDownloads_Selected(ByVal sender As Object, _ 89 Chương Customer Support ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles _ odsDownloads.Selected Dim recordsAffected As Integer = _ Convert.ToInt32(e.OutputParameters.Item(“recordsAffected”)) End Sub Mã lệnh lại phương thức thụ lý kiện sử dụng để xây dựng thơng báo, cho người dùng biết có mNu tin tìm thấy Đến kết thúc thảo luận trang Downloads Với trang này, người dùng duyệt qua danh sách download, lọc download mà họ quan tâm Một tính khác webiste cho phép người dùng tìm kiếm nội dung trang Faqs, thảo luận sau 8.3.4 FAQ Trang chứa câu hỏi thường gặp khác với trang mà bạn thấy Thay sử dụng danh sách thả xuống cho chủng loại, trang Faqs cho phép người dùng tìm kiếm tồn bảng Faq với truy vấn hỗ trợ logic AND OR Do đó, truy vấn “driver AND failure” trả tất câu hỏi thường gặp có chứa từ “driver” “failure”, truy vấn “driver OR failure” trả FAQ chứa hai từ Các phiên thương mại SQL Server 2005 cung cấp khái niệm Full Text Indexing Đây kỹ thuật tìm kiếm mạnh, cho phép bạn đặt nhiều câu hỏi phức tạp truy vấn Boolean đơn giản Tuy nhiên, Full Text Indexing SQL Server Express Edition, bạn phải cài phiên đầy đủ muốn sử dụng tính Tham khảo SQL Server Books Online website MSDN Microsoft (http://msdn.microsoft.com) để hiểu thêm Full Text Indexing Mã đánh dấu trang Faqs đơn giản: dịng chữ giới thiệu, textbox để nhập chuỗi tìm kiếm, nút nhấn để bắt đầu tìm kiếm, hai placeholder để hiển thị thông báo cho người dùng biết số lượng kết tìm N ó có điều kiểm DataList để hiển thị câu hỏi thường gặp câu trả lời Có lẽ bạn để ý đến vắng bóng điều kiểm nguồn liệu mã đánh dấu trang? Trang khơng có điều kiểm nguồn liệu, phép kết liệu thực code-behind trang, kiện Click nút nhấn: Protected Sub btnSearch_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnSearch.Click dlFaqs.DataSource = Faq.GetFaqList(txtSearchTerm.Text) dlFaqs.DataBind() If dlFaqs.Items.Count > Then lblSearchedFor2.Text = txtSearchTerm.Text plcRecords.Visible = True plcNoRecords.Visible = False Else lblSearchedFor1.Text = txtSearchTerm.Text plcNoRecords.Visible = True plcRecords.Visible = False End If End Sub Mã lệnh gọi phương thức GetFaqList lớp Faq Phương thức (sẽ xét sau) trả DataSet, gán cho thuộc tính DataSource điều kiểm DataList Bởi khơng có 90 Chương Customer Support điều kiểm ObjectDataSource sử dụng để tự động thụ lý việc kết liệu, bạn phải gọi DataBind cách tường minh DataList Điều khiến DataList hiển thị FAQ trả từ sở liệu Sau DataBind gọi, bạn kiểm tra số mục DataList cách xét thuộc tính Count tập Items Khi Count 0, trang cho hiển thị với tên plcNoRecords (chứa thơng báo khơng tìm thấy FAQ nào) Để cho thấy người dùng tìm kiếm gì, nhãn lblSearchedFor1 cập nhật với chuỗi tìm kiếm Thay trực tiếp kết điều kiểm code-behind dlFaqs.DataBind(), bạn sử dụng điều kiểm nguồn liệu, ObjectDataSource Tuy nhiên, sử dụng điều kiểm cần làm việc để thực chức mong muốn Trước tiên, bạn cần tạo cho chuỗi tìm kiếm Bạn cần tìm cách ngăn điều kiểm thực thi thao tác Select trang nạp lần Cuối cùng, bạn cần viết mã lệnh cho phương thức thụ lý kiện Selected (phát sinh sau điều kiểm chọn liệu từ nguồn liệu) nhằm xác định có mNu tin trả hay khơng, để bạn Nn panel thích hợp Trực tiếp sử dụng DataBind điều kiểm DataList code-behind giải tất vấn đề Chương 12 trình bày cách sử dụng kiện Selected điều kiểm ObjectDataSource để lấy thơng tin hữu ích liệu trả điều kiểm sau hoàn tất với phương thức Select Khi DataList chứa mNu tin, hành động ngược lại thực plcNoRecords Nn plcRecord hiển thị Đúng bạn mong đợi, GetFaqList lớp Faq gọi phương thức GetFaqList lớp FaqDB để lấy câu hỏi thường gặp từ sở liệu Phương thức cần xem xét kỹ, khác với mã lệnh truy xuất liệu mà bạn thấy trước Mọi thủ tục tồn trữ mà bạn thấy trước “self-contained”, tức chúng chứa câu lệnh SQL hoàn chỉnh, nhận (tùy chọn) hay nhiều tham số điều khiển mệnh đề WHERE Tuy nhiên, người dùng tìm kiếm cú pháp truy vấn Boolean giới thiệu trước đây, mệnh đề WHERE bình thường khơng làm việc Thay vào đó, mã lệnh lớp FaqDB xây dựng động mệnh đề WHERE, truyền làm tham số cho thủ tục tồn trữ Sau đó, thủ tục tồn trữ sử dụng phương thức EXEC SQL Server để thực thi câu lệnh SQL động (chứa mệnh đề WHERE đó) Quy trình giải thích bước Đầu tiên, xem câu lệnh SQL cuối Giả sử người dùng nhập chuỗi “driver AND failure”, tức người muốn tìm tất FAQ có chứa hai từ Câu lệnh SELECT sau: SELECT Id, QuestionShort, QuestionLong, Answer FROM Faq WHERE ( QuestionShort LIKE N‘%driver%’ OR QuestionLong LIKE N‘%driver%’ OR Answer LIKE N‘%driver%’ ) AND ( QuestionShort LIKE N‘%failure%’ OR QuestionLong LIKE N‘%failure%’ OR Answer LIKE N‘%failure%’ ) 91 Chương Customer Support Bởi tính chất động chuỗi tìm kiếm, bạn khơng thể việc thay “%driver%” “%failure%” với hai tham số cho thủ tục tồn trữ tạo truy vấn động Lỡ người dùng tìm “driver AND failure AND Power Printer” sao? Thay hai tham số, bạn cần đến ba tham số! Giải pháp cho vấn đề tạo động toàn mệnh đề WHERE Điều thực phương thức BuildWhereClause (phương thức gọi phương thức GetFaqList): Private Shared Function BuildWhereClause(ByVal searchTerm As String) As String Dim simpleSearch As Boolean = True Dim whereClause As String = String.Empty searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm = = = = = = = = = searchTerm.Trim() searchTerm.Replace(“'”, “''”) searchTerm.Replace(“""”, “”) searchTerm.Replace(“%”, “”) searchTerm.Replace(“ ”, “”) searchTerm.Replace(“;”, “”) searchTerm.Replace(“(”, “”) searchTerm.Replace(“)”, “”) searchTerm.Replace(“_”, “”) Dim testReplace As String = “” testReplace = searchTerm.ToUpper().Replace(“ AND ”, “”) If testReplace searchTerm.ToUpper() Then simpleSearch = False End If testReplace = searchTerm.ToUpper().Replace(“ OR ”, “”) If testReplace searchTerm.ToUpper() Then simpleSearch = False End If If simpleSearch = True Then searchTerm = searchTerm.Replace(“ ”, “ AND ”) End If Dim myAndSplits() As String = Regex.Split(searchTerm, “ and ”, _ RegexOptions.IgnoreCase) For i As Integer = To myAndSplits.Length - Dim myOrSplits() As String = Regex.Split(myAndSplits(i), “ or ”, _ RegexOptions.IgnoreCase) whereClause += “(” For j As Integer = To myOrSplits.Length - whereClause += “(F.QuestionShort LIKE N‘%” & myOrSplits(j) & “%’ OR _ F.QuestionLong LIKE N‘%” & myOrSplits(j) & “%’ OR F.Answer LIKE N‘%” & _ myOrSplits(j) & “%’)” If (j + 1) < myOrSplits.Length Then whereClause += “ OR ” End If Next whereClause += “) ” Next If (i + 1) < myAndSplits.Length Then whereClause += “ AND ” End If 92 Chương Customer Support Return whereClause End Function Mã lệnh bắt đầu việc khai báo hai biến số lời gọi phương thức Replace: Dim simpleSearch As Boolean = True Dim whereClause As String = String.Empty searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm searchTerm = = = = = = = = = searchTerm.Trim() searchTerm.Replace(“'”, “''”) searchTerm.Replace(“""”, “”) searchTerm.Replace(“%”, “”) searchTerm.Replace(“ ”, “”) searchTerm.Replace(“;”, “”) searchTerm.Replace(“(”, “”) searchTerm.Replace(“)”, “”) searchTerm.Replace(“_”, “”) Biến simpleSearch sử dụng để xác định chuỗi tìm kiếm ban đầu có chứa từ khóa AND hay OR hay không Biến whereClause sử dụng để chứa mệnh đề WHERE mà phương thức xây dựng Phương thức Replace sử dụng nhiều lần để loại bỏ ký tự không cần thiết cho câu lệnh SQL N ếu bạn không “làm sạch” mã SQL, sở liệu bạn dễ bị hacker cơng theo kiểu SQL Injection Bình thường, mã lệnh thủ tục tồn trữ tham số hóa đảm nhận việc này; với câu lệnh SQL động, bạn phải tự thực việc Trong thực tại, mã lệnh “làm sạch” nhúng trực tiếp phần thân phương thức, bạn có ý định sử dụng kỹ thuật thường nên chuyển thành phương thức riêng biệt Bạn thấy số ký tự quan trọng, có ý nghĩa đặc biệt TSQL thay Ví dụ, hai dấu gạch ngang ( ) thay rỗng Hai ký tự biểu thị bắt đầu thích, hacker sử dụng để khơng cho phần SQL cịn lại thực thi Dấu nháy đơn (') thay hai dấu nháy đơn (''), dấu nháy kép (") bị loại bỏ hoàn tồn chúng sử dụng để xen dấu phân cách chuỗi không hợp lệ Dấu phần trăm (%) bị loại bỏ để ngăn người dùng tìm với ký tự đại diện (wildcard) Các câu lệnh sử dụng biến testReplace phương thức kiếm ban đầu chứa từ khóa AND hay OR hay khơng: Replace để xem chuỗi tìm Dim testReplace As String = “” testReplace = searchTerm.ToUpper().Replace(“ AND ”, “”) If testReplace searchTerm.ToUpper() Then simpleSearch = False End If testReplace = searchTerm.ToUpper().Replace(“ OR ”, “”) If testReplace searchTerm.ToUpper() Then simpleSearch = False End If If simpleSearch = True Then searchTerm = searchTerm.Replace(“ ”, “ AND ”) End If N ếu hai từ khóa diện chuỗi tìm kiếm, giả định người dùng có ý sử dụng logic Boolean chuỗi tìm kiếm N gược lại, khoảng trắng chuỗi tìm kiếm thay AND Do đó, người dùng tìm “driver OR failure”, chuỗi tìm kiếm khơng thay đổi Tuy nhiên, người dùng tìm “driver failure”, chuỗi tìm kiếm thay “driver AND failure” 93 Chương Customer Support Khối mã sử dụng phương thức Split đối tượng Regex để tách chuỗi tìm kiếm dựa từ khóa AND, sau duyệt qua mảng quan sát phần tử riêng lẻ: Dim myAndSplits() As String = Regex.Split(searchTerm, “ and ”, _ RegexOptions.IgnoreCase) For i As Integer = To myAndSplits.Length - Sau đó, mã lệnh tách phần tử dựa từ khóa OR N ếu từ khóa khơng diện phần tử, vòng lặp For j thực thi lần thêm phần tử vào mệnh đề WHERE (được bao quanh dấu ngoặc đơn) N ếu phần tử có chứa từ khóa OR, vịng lặp thêm mục riêng lẻ vào mệnh đề WHERE (được phân tách từ khóa OR): Dim myOrSplits() As String = Regex.Split(myAndSplits(i), “ or ”, _ RegexOptions.IgnoreCase) whereClause += “(” For j As Integer = To myOrSplits.Length - whereClause += “(F.QuestionShort LIKE N‘%” & myOrSplits(j) & “%’ OR _ F.QuestionLong LIKE N‘%” & myOrSplits(j) & “%’ OR F.Answer LIKE N‘%” & _ myOrSplits(j) & “%’)” If (j + 1) < myOrSplits.Length Then whereClause += “ OR ” End If Next whereClause += “) ” If (i + 1) < myAndSplits.Length Then whereClause += “ AND ” End If Next Return whereClause End Function Cuối cùng, toàn mệnh đề WHERE trả cho mã lệnh gọi Để thấy mệnh đề WHERE xây dựng nào, giả sử người dùng nhập chuỗi tìm kiếm “driver AND failure AND Power Printer OR 3D Printer” Biểu thức tìm kiếm trả tất câu hỏi thường gặp có chứa từ “driver” “failure” ““Power Printer” “3D Printer”” Với ví dụ này, kết thúc hàm BuildWhereClause, biến whereClause chứa chuỗi sau: ( ( F.QuestionShort LIKE N‘%driver%’ OR F.QuestionLong LIKE N‘%driver%’ OR F.Answer LIKE N‘%driver%’ ) ) AND ( ( ) ) AND F.QuestionShort LIKE N‘%failure%’ OR F.QuestionLong LIKE N‘%failure%’ OR F.Answer LIKE N‘%failure%’ 94 Chương Customer Support ( ( F.QuestionShort LIKE N‘%Power Printer%’ OR F.QuestionLong LIKE N‘%Power Printer%’ OR F.Answer LIKE N‘%Power Printer%’ ) OR ( F.QuestionShort LIKE N‘%3D Printer%’ OR F.QuestionLong LIKE N‘%3D Printer%’ OR F.Answer LIKE N‘%3D Printer%’ ) ) Khi thực thi SQL Server, mệnh đề WHERE trả tất câu hỏi thường gặp thỏa tiêu chuNn tìm kiếm Bởi cách thiết lập mã lệnh, khơng quan tâm câu hỏi ngắn có chứa từ “driver” câu trả lời có chứa từ “failure” hay khơng, ngược lại Trong trường hợp, mã lệnh tìm thấy mNu tin mà người dùng tìm kiếm Mệnh đề WHERE truyền cho sở liệu thông qua tham số SQL @whereClause, gắn vào câu lệnh SQL thực thi với lệnh EXEC: CREATE PROCEDURE sprocFaqSelectListBySearchTerm @whereClause nvarchar(1000) AS DECLARE @sqlStatement nvarchar(MAX) SET @sqlStatement = ‘ SELECT Id, QuestionShort, QuestionLong, Answer FROM Faq F WHERE ’ + @whereClause + ‘ ORDER BY Id DESC’ EXEC(@sqlStatement) Câu lệnh thường EXEC trả mục FAQ yêu cầu, giống câu lệnh SELECT thông Đến xem kết thúc phần FAQ tồn phần cơng khai Customer Support Với trang thư mục ContentFiles, người dùng dễ dàng tìm thấy sản phNm, file kèm sản phNm, duyệt qua câu hỏi thường gặp Phần cuối “Mã lệnh Customer Support” khảo sát trang thư mục Management, chứa CMS cho Customer Support 8.3.5 Customer Support CMS Hầu hết khái niệm sử dụng hệ thống quản lý nội dung Customer Support thảo luận chương trước đây, đặc biệt chương “CMS” Tuy nhiên, có số điều cần bàn, trình bày sau cách ngắn gọn Trang quản lý chủng loại 95 Chương Customer Support Trang Categories.aspx cho phép bạn thêm chủng loại vào sở liệu Bằng việc sử dụng danh sách thả xuống quen thuộc, bạn sâu vào cấu trúc phân cấp chủng loại thêm chủng loại mức Điểm quan trọng cần lưu ý trang cách sử dụng validator Trang có ba textbox, cho phép bạn nhập chủng loại để thêm vào sở liệu mức Mỗi textbox có điều kiểm gắn với Thơng thường, với ba validator, bạn cần phải nhập liệu vào ba textbox trước trang xác nhận tính hợp lệ Tuy nhiên, trường hợp này, ba textbox bắt buộc Để cho phép validator thời điểm, validator có đặc tính ValidationGroup khác Dưới validator kiểm tra textbox thứ nhất: Các điều kiểm kích hoạt việc kiểm tra hợp lệ (như nút nhấn) có đặc tính ValidationGroup Theo cách này, bạn gắn điều kiểm postback với ValidationGroup cụ thể: Khi nút nhấn, có điều kiểm ValidationGroup kiểm tra tính hợp lệ Các trang liệt kê Các trang liệt kê sản phNm, download, FAQ giống Chúng sử dụng GridView để hiển thị mục Các nút Sửa Xóa cho phép bạn thay đổi mục có xóa chúng RowCommand cho GridView xét CommandName đối số để xác định hành động phải thực hiện, sử dụng mệnh đề Select Case Bên khối Case, mã lệnh chuyển CommandArgument thành Integer sử dụng để thu lấy DataKey khung lưới Bạn dời mã lệnh ngồi mệnh đề Select Case để bạn phải viết có lần Tuy nhiên làm thế, bạn gặp vấn đề xếp GridView Mặc dù việc xếp thực tự động ASP.NET, phát sinh RowCommand bạn nhắp vào tiêu đề cột để xếp khung lưới Khi thực thế, CommandArgument tham số e chứa tên cột cần Rõ ràng, tên cột chuyển thành Integer được, mã lệnh “phá sản” Các trang tạo cập nhật Với loại nội dung—Download, FAQ, Sản phẩm—có trang InsertUpdate cho phép bạn tạo cập nhật mục tồn Cả ba sử dụng FCKeditor Mã lệnh trang Download Product sử dụng phương thức GetCategoryPath lớp Category Phương thức trả đường dẫn chủng loại từ mNu tin đến mNu tin cha Phương thức cần thiết mục nội dung sở liệu chứa chủng loại sâu Để chọn trước danh sách thả xuống mức cha, bạn cần biết chủng loại có chủng loại cha Thủ tục tồn trữ sprocCategorySelectPath lần sử dụng Common Table Expressions theo cách mà bạn thấy trước Với trang mã lệnh chúng, bạn hết phần “Mã lệnh Customer Support” Giờ đây, bạn sử dụng hiểu rõ lối hoạt động bên Customer Support Trong phần tiếp theo, bạn biết cách cài đặt ứng dụng lên web server 96 Chương Customer Support 8.4 Cài đặt Customer Support Cũng chương khác sách này, bạn chọn cài đặt Customer Support tự động hay tay Quá trình cài đặt tự động cho phép bạn thiết lập ứng dụng chạy IIS Điều hữu ích bạn muốn triển khai hệ thống server internet hay intranet cục N ếu muốn xem xét chi tiết mã lệnh cải tiến nó, bạn nên chọn q trình cài đặt tay Sử dụng gói cài đặt N ếu bạn muốn cài đặt CustomerSupport website thực thụ máy tính hay máy server, khơng có hiệu chỉnh hay mở rộng cả, thực theo bước sau (sử dụng gói cài đặt): Chạy file WebSetupProjects\CustomerSupport\Debug\CustomerSupport.msi từ CD-ROM đính kèm Q trình cài đặt file cần thiết vào thư mục C:\Inetpub\wwwroot\ CustomerSupport\ Chú ý rằng, lúc cài đặt, có hình u cầu bạn xác nhận tên thư mục ảo, bạn giữ nguyên tên mặc định CustomerSupport (xem hình 8-18) Hình 8-18 N hắp Next để cài đặt ứng dụng, đóng chương trình cài đặt hồn tất Kế tiếp, mở file Web.config thư mục C:\Inetpub\wwwroot\CustomerSupport\ tìm nút Kiểm tra chuỗi kết nối có trỏ đến cài đặt SQL Server bạn hay không điều chỉnh cần thiết Lưu đóng file Cũng giống chương (“CMS”), bạn cần cấu hình quyền bảo mật cho thư mục UserFiles, để website lưu file upload qua website FCKeditor Tham khảo chương để có dẫn chi tiết 97 Chương Customer Support Bây duyệt http://localhost/CustomerSupport Ứng dụng Customer Support xuất bạn xem danh sách sản phNm, download, FAQ Cài đặt tay Mặc dù sử dụng gói cài đặt cách tiện lợi để cài đặt Customer Support, cài đặt tay không khó Để cài đặt Customer Support tay, tuân theo bước sau: Chép thư mục Websites\CustomerSupport\ từ CD-ROM đính kèm vào đĩa cứng, chẳng hạn C:\Websites\CustomerSupport\ Mở Visual Studio 2005 (hay Visual Web Developer) Chọn File | Open Web Site tìm đến thư mục C:\Websites\CustomerSupport\ Khi đó, cửa sổ Solution Explorer chứa tất file dự án Kế tiếp, mở file Web.config từ Solution Explorer tìm nút Kiểm tra chuỗi kết nối có trỏ đến cài đặt SQL Server bạn hay khơng điều chỉnh cần thiết Lưu đóng file Cũng giống chương (“CMS”), bạn cần cấu hình quyền bảo mật cho thư mục UserFiles, để website lưu file upload qua website FCKeditor Tham khảo chương để có dẫn chi tiết Bây bạn duyệt website cách nhấn Ctrl+F5 Visual Studio 2005 (hay Visual Web Developer) khởi chạy web server nội website hiển thị trình duyệt mặc định Sử dụng Customer Support Bất chấp chọn kiểu cài đặt nào, bạn phải xem Customer Support trình duyệt Bạn sử dụng mục trình đơn Sản phẩm Download theo cách mô tả đầu chương Bạn thấy mục trình đơn Quản trị, mục cho phép bạn quản lý nội dung hệ thống 98 Chương Customer Support Hình 8-19 N hằm tạo thuận lợi lý giải cách hoạt động Customer Support, cho phép bạn truy xuất dễ dàng phần phản trị, khơng có chế xác thực sử dụng cho website Điều có nghĩa: có quyền truy xuất phần quản trị website Dĩ nhiên điều bạn muốn, bạn cần bảo vệ vùng Để thực việc này, chọn Website | ASP.NET Configuration từ trình đơn Visual Studio 2005 hay Visual Web Developer N hư thế, Web Site Administration Tool xuất cửa sổ trình duyệt Tạo vai trị ContentManagers người dùng, gán người dùng vào vai trị N ếu bạn cần thêm thông tin cách làm việc Web Site Administration Tool, nhắp liên kết How I use this tool? góc phải hình Bước thêm đoạn mã sau vào cuối file Web.config, sau thẻ đóng nút : Đoạn mã không cho phép truy xuất thư mục Management người dùng khơng thuộc vai trị ContentManagers Một giải pháp khác tạo website CMS hoàn toàn mới, kết nối với sở liệu Customer Support Với cách này, bạn tách biệt phần cơng khai với phần bảo vệ website 99 Chương Customer Support Trong phần tiếp theo, bạn biết cách mở rộng Customer Support để hữu ích Phần đề xuất số tính cải tiến cho Customer Support thực tính 8.5 Mở rộng Customer Support Một cải tiến cho Customer Support cho phép người dùng liên hệ với bạn thông qua form Contact Theo cách này, người dùng đặt câu hỏi sản phNm Sau đó, câu hỏi câu trả lời thêm vào danh sách FAQ site Phần hướng dẫn bạn tạo tính Bạn biết cách tạo form cách gửi e-mail cho phận hỗ trợ người dùng điền vào form Thêm nữa, bạn biết cách lưu chi tiết người dùng vào Profile để người dùng nhập nhập lại chi tiết Để thực form Contact, tuân theo bước sau: Thêm trang với tên Contact.aspx thư mục ContentFiles Cho trang sử dụng trang MainMaster.master Trong điều kiểm MainMenu.ascx (thuộc thư mục Controls), thêm liên kết đến trang để người dùng truy xuất Trên trang Contact, tạo form với textbox cho tên người dùng, địa e-mail, câu hỏi/lời bình Đặt tên cho điều kiểm txtUserName, txtEmailAddress, txtComments Thiết lập thuộc tính TextMode txtComments MultiLine Thêm nút btnSave với text Gửi comment Thêm checkbox chkRememberMe để người dùng chọn lưu chi tiết họ Tiếp tục, thêm nhãn lblStatus để báo với người dùng thơng điệp gửi N ếu muốn, bạn thay đổi bố cục trang thành mà bạn thấy hợp Bạn sử dụng bảng nhãn để trang dễ đọc N hắp đúp vào nút nhấn Design View để VWD thêm mã lệnh thụ lý kiện nút nhấn Click Chuyển sang Design View nhắp đúp vào đâu trang Mã lệnh thụ lý kiện Page_Load thêm vào Mở file Web.config bên phần tử , thêm đoạn mã sau: Cấu hình cho ứng dụng sử dụng provider hỗ trợ tính Profile Để làm thế, chọn Website | ASP.NET Configuration VS2005 (hay VWD) Trong Web Site Administration Tool, nhắp Provider Configuration nhắp Select a single provider for all site management data Đảm bảo AspNetSqlProvider chọn nhắp liên kết Test để đảm bảo provider hoạt động xác 100 Chương Customer Support Hình 8-20 Trở lại file Web.config cuộn đến nút Đổi đặc tính host phần tử thành tên mail server mà bạn sử dụng để gửi mail Tùy vào cài đặt bạn, localhost hay SMTP server Ở đầu trang, thêm câu lệnh Imports cho System.Net.Mail thêm đoạn mã sau vào phương thức thụ lý kiện Click nút nhấn mà bạn thêm bước 6: Protected Sub btnSave_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnSave.Click Dim subject As String = "Phản hồi từ website" Dim message As String = String.Format("Người dùng {0} với " & _ "địa e-mail: {1} để lại thông điệp sau " & _ ControlChars.CrLf & "{2}", txtUserName.Text, _ txtEmailAddress.Text, txtComments.Text) Dim mySmtpClient As SmtpClient = New SmtpClient() Dim myMessage As MailMessage = New MailMessage( _ "You@YourProvider.Com", "You@YourProvider.Com", subject, message) myMessage.IsBodyHtml = False mySmtpClient.Send(myMessage) If chkRememberMe.Checked Then Profile.Name = txtUserName.Text Profile.EmailAddress = txtEmailAddress.Text Else Profile.Name = String.Empty Profile.EmailAddress = String.Empty End If lblStatus.Text = "Thông điệp gửi đi." End Sub Hãy thay You@YourProvider.Com địa e-mail bạn Đoạn mã định dạng phần thân thông điệp cách lấy giá trị textbox nối vào thông điệp (dạng chuỗi) Sau đó, MailMessage tạo gửi phương thức 101 Chương Customer Support đối tượng SmtpClient Ở cuối phương thức, chi tiết người dùng lưu vào Profile người dùng chọn lưu Send Bước cuối trang Contact đưa chi tiết người dùng vào TextBox chúng tồn profile Để làm điều đó, thêm đoạn mã sau vào phương thức thụ lý kiện Page_Load mà bạn thêm bước 7: If Not Page.IsPostBack Then txtUserName.Text = Profile.Name txtEmailAddress.Text = Profile.EmailAddress End If Trang Contact xong, người dùng gửi thơng điệp đến phận hỗ trợ, yêu cầu thêm thông tin đề xuất sản phNm N hằm tạo dễ dàng cho người dùng điền form, trang Contact lưu chi tiết người dùng tính Profile ASP.NET 2.0 Sau đó, thơng tin đưa vào textbox trang Contact nạp lại lượt Với Customer Support, bạn thấy hầu hết tính cần thiết để cung cấp đủ thông tin hỗ trợ cho người dùng Tuy nhiên, nhiều trường hợp, bạn cần Với site tại, tương đối dễ tạo tính như: Tìm kiếm theo serial number—N ếu có sở liệu chứa serial number sản phNm, bạn kết serial number với file câu hỏi thường gặp Theo đó, người dùng nhanh chóng tìm thấy thơng tin cần thiết cách nhập serial number sản phNm Tích hợp với webshop—Trong chương tiếp theo, bạn biết cách tạo webshop (hệ thống bán hàng trực tuyến) Và bạn tích hợp webshop với Customer Support Theo đó, người dùng duyệt sản phNm, đặt mua, download file hỗ trợ cho sản phNm đó; tất website Hiện thực tính “download file có liên quan”—Đây tính phổ biến, bạn thêm tính vào trang Downloads Tại trang này, bạn cho file có liên quan với file mà người dùng xem 8.6 Kết chương Trong chương này, bạn giới thiệu Customer Support, website cho phép người dùng tìm lấy thơng tin sản phNm mà công ty Codepro Hardware bán Đầu tiên, bạn dạo qua hệ thống từ góc độ người dùng cuối Bạn biết cách tìm kiếm sản phNm, file kèm, câu hỏi thường gặp Tiếp đến, bạn có nhìn khái qt thiết kế hệ thống Bạn thấy ứng dụng tách làm ba tầng khác nhau: cho trình bày, cho logic nghiệp vụ, cho truy xuất liệu Bạn thấy qua danh sách lớp có liên quan phương thức mà chúng hỗ trợ Trong phần “Mã lệnh Customer Support”, bạn xét kỹ mã lệnh bên tất lớp trang Bạn biết cách triển khai điều kiểm ObjectDataSource để áp dụng kiến trúc ba tầng cho ứng dụng Các điều kiểm cho phép bạn tạo ứng dụng thiết kế tốt dễ bảo trì (khơng phải làm rối trang nhiều lệnh SQL hay tên thủ tục tồn trữ) Bạn biết cách 102 Chương Customer Support sử dụng tính Common Table Expressions SQL Server, kỹ thuật mạnh để tạo mã đệ quy, cho phép bạn thu lấy cấu trúc liệu phức hợp, phân cấp từ sở liệu Cuối chương, bạn biết cách cài đặt Customer Support thực cải tiến cho ... http://codeprovn.com/forums/viewtopic.php?p=283 NHÀ XUẤT BẢN HỒNG ĐỨC LỜI NÓI ĐẦU C ác giải pháp lập trình ASP.NET 2.0 sách hồn hảo cho muốn tìm hiểu nhanh tính cơng cụ phiên 2.0 ASP.NET Bạn đọc sách viết theo lối truyền thống, nhiều... thay đổi kiến lập ASP.NET 2.0, bao gồm kiến trúc website, tốc độ u cầu trang, việc quản lý thơng tin có trạng thái, hiệu phát triển toàn diện Nếu bạn chọn ASP.NET 2.0, nỗ lực lập trình bạn dễ... xuất liệu, trình bày thiết kế sở liệu thủ tục tồn trữ dùng để truy xuất liệu 24 Chương CMS 7.2 Thiết kế CMS Hầu hết trang CMS dựa vào điều kiểm SqlDataSource để đưa liệu vào/ra sở liệu Các điều