Ngành công nghệ thông tin hiện nay đang ngày càng phát triển khi việc sử dụng các máy móc, các công cụ có áp dụng công nghệ đã giúp cho con nguời giảm bớt rất nhiều thời gian và công sức trong công việc. Từ việc mua sắm, đặt xe, đăng ký tiêm Vaccine trong thời kỳ Covid qua website đã phần nào thể hiện rõ sự tiện lợi mà công nghệ mang lại. Tuy vậy nhân lực ở ngành lập trình vẫn còn rất khan hiếm vì không phải ai cũng có thể tiếp thu hoặc thích thú với công việc lập trình vốn đòi hỏi sự chuẩn xác và logic cao. Khi cầu nhiều hơn cung sẽ dẫn đến việc các vị trí lập trình khởi điểm với mức lương rất cao so mới những ngành nghề khác và mảng lập trình web cũng là một mảng mà rất thu hút nguồn nhân lực ở thời điểm hiện tại. Môn học lập trình web là một môn quan trọng, khi hoàn thành môn này, sinh viên sẽ có khả năng hiểu và tạo ra một trang web với công nghệ ASP.NET, cách kết nối cơ sở dữ liệu, cách để triển khai sản phẩm trên môi trường internet,... Ngoài ra sinh viên cũng hoàn hoàn toàn có thể xin đi thực tập ở một số công ty với nếu nắm vững những kiến thức đã học.Việc nắm vững những kiến thức cơ bản sẽ tạo tiền đề để sinh viên phát triển kiến thức của mình và có khả năng tiếp thu thêm những kiến thức nâng cao hơn về sau. Ngành lập trình là một ngành tiềm năng và hứa hẹn trong tương lai, như bối cảnh đại dịch Covid vừa qua, ta có thể thấy rằng những lập trình viên hay những công ty về gia công phần mềm sẽ gần như không bị ảnh hưởng của đại dịch, hay thậm chí còn tăng trưởng thêm. Vì vậy môn Lập Trình Web sẽ là một môn nền tảng rất tốt để sinh viên làm quen với việc lập trình, nó không quá dễ và cũng không quá khó để học. Giúp sinh viên tổng hợp kiến thực từ 3 môn : Cơ sở lập trình, Kỹ thuật lập trình và Hệ quản trị cơ sở dữ liệu
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CƠ SỞ
LẬP TRÌNH WEBSITE Bán hàng CozaStore
Giảng viên hướng dẫn: NGUYỄN MAI HUY
Sinh viên thực hiện: NGUYỄN THÀNH PHÁT
Trang 3Lời cảm ơn
Mọi thành tựu luôn không đến từ một cá nhân duy nhất, xin chân thành cảm ơn
ba mẹ, Thầy Huy và những người bạn, những người cộng sự đã góp phần hỗ trợ, hậu phương, cũng như nhiệt tình giải đáp những thắc mắc của tôi trên con đường học vấn của mình
Đặc biệt nhất là thầy Nguyễn Mai Huy thuộc Khoa CNTT trường ĐH Nguyễn Tất Thành Em vô cùng biết ơn và quý trọng những video bài giảng mà thầy đã dành thời gian, tâm huyết của mình tạo ra để giúp chúng em học tốt hơn, những bài giảng của thầy rất dễ hiểu và chuẩn xác về kiến thức nền tảng lẫn chuyên môn, đây là điều hiếm giảng viên đại học nào chịu bỏ thời gian ra làm cho sinh viên, em có giới thiệu với tụi bạn trường khác và bọn nó rất thích Tuy nhiên điều em trân trọng nhất trong tiết học của thầy chính là thầy không chỉ dạy kiến thức chuyên môn mà thầy còn dạy tụi em cách làm người nữa, đây là điều mà rất hiếm giáo viên nào dạy Những nguyên tắc ứng xử, thái độ, những câu chuyện thầy kể về kinh nghiệm làm việc trong ngành lập trình tưởng chừng là nghe để giải trí sau những giờ học căng thẳng tuy nhiên đó lại chính là những hành trang rất tốt cho chúng em sau này bước vào đời Cảm ơn thầy đã nghiêm khắc với tụi em và em cũng hi vọng thầy sẽ giữ mãi sự nghiêm khắc đó với những thế hệ đàn em của tụi em nữa Vì em biết, chính nhờ điều đó mới khiến chúng
em trưởng thành, khiến em hiểu rằng cuộc đời vốn không hề đơn giản, phải nỗ lực gieo trồng mới có quả ngọt được Em cảm ơn thầy vì tất cả, chúc thầy có nhiều sức khoẻ, ngày càng gặt hái được nhiều thành công trong sự nghiệp trồng người của mình
Cảm ơn ba mẹ đã cho con được mọi điều kiện thuận lợi nhất để học hành, cảm
ơn Google, StackOverFlow, Youtube, những anh Ấn Độ mà tôi chưa biết tên đã giúp tôi có thêm những lời giải đáp trong những lúc bị lỗi code, fix bug Và còn những người cộng sự, những người bạn khác đã âm thầm giúp đỡ Cảm ơn tất cả…
Trang 4Lời giới thiệu
Ngành công nghệ thông tin hiện nay đang ngày càng phát triển khi việc sử dụng các máy móc, các công cụ có áp dụng công nghệ đã giúp cho con nguời giảm bớt rất nhiều thời gian và công sức trong công việc Từ việc mua sắm, đặt xe, đăng ký tiêm Vaccine trong thời kỳ Covid qua website đã phần nào thể hiện rõ sự tiện lợi mà công nghệ mang lại Tuy vậy nhân lực ở ngành lập trình vẫn còn rất khan hiếm vì không phải ai cũng có thể tiếp thu hoặc thích thú với công việc lập trình vốn đòi hỏi sự chuẩn xác và logic cao Khi cầu nhiều hơn cung sẽ dẫn đến việc các vị trí lập trình khởi điểm với mức lương rất cao so mới những ngành nghề khác và mảng lập trình web cũng là một mảng mà rất thu hút nguồn nhân lực ở thời điểm hiện tại
Môn học lập trình web là một môn quan trọng, khi hoàn thành môn này, sinh viên sẽ có khả năng hiểu và tạo ra một trang web với công nghệ ASP.NET, cách kết nối cơ sở dữ liệu, cách để triển khai sản phẩm trên môi trường internet, Ngoài ra sinh viên cũng hoàn hoàn toàn có thể xin đi thực tập ở một số công ty với nếu nắm vững những kiến thức đã học.Việc nắm vững những kiến thức cơ bản sẽ tạo tiền đề để sinh viên phát triển kiến thức của mình và có khả năng tiếp thu thêm những kiến thức nâng cao hơn về sau Ngành lập trình là một ngành tiềm năng và hứa hẹn trong tương lai, như bối cảnh đại dịch Covid vừa qua, ta có thể thấy rằng những lập trình viên hay những công ty về gia công phần mềm sẽ gần như không bị ảnh hưởng của đại dịch, hay thậm chí còn tăng trưởng thêm Vì vậy môn Lập Trình Web sẽ là một môn nền tảng rất tốt để sinh viên làm quen với việc lập trình, nó không quá dễ và cũng không quá khó
để học Giúp sinh viên tổng hợp kiến thực từ 3 môn : Cơ sở lập trình, Kỹ thuật lập trình và Hệ quản trị cơ sở dữ liệu
Không để đợi lâu nữa, nào ta cùng khám phá hôm học thú vị này nhé!
Trang 52 Cần chuẩn bị những kiến thức gì trước khi học Lập trình Web? 9
3 Cách để tạo một project ASP.NET MVC trên Visual Studio 18
4 Các phương thức nền tảng để kết nối trong mô hình MVC 21
Trang 6Chương 3: Public mã nguồn và chạy trên Internet 80
Trang 7PHẦN I: KIẾN THỨC
Trang 8Chương 1: Khởi động với kiến thức nền tảng
1 Lập trình Web là gì?
Lập trình Web có thể được hiểu đơn giản là “code” ra một trang web hay nói cách khác là việc chúng ta “tạo” ra một website có thể vận hành được
(Hình 1.1)
Mối liên hệ giữa Thiết kế Web và Lập trình Web?
Giống với việc xây dựng một ngôn nhà, thiết kế Web được hiểu như là việc thiết kế bản vẽ, tạo ra hình dáng bên ngoài, tức là hình ảnh khi nhìn vào, còn Lập trình Web sẽ chính là việc xây dựng nền móng, chọn nguyên vật liệu phù hợp để cấu thành cấu trúc cũng như những tiện nghi bên trong của ngôn nhà
ấy Đảm bảo nó vững chắc và bền bỉ theo thời gian
Trang 9(Hình 1.2 – Ví dụ về việc xây nhà với lập trình web)
Tương tự, việc “xây” lên một website cũng đòi hỏi 2 bộ phận Hay ta còn gọi
là Front-end và Back-end Nôm na, Front-end làm giao diện còn Back-end làm hệ thống xử lý bên trong Thông thường, thay vì tự thiết kế giao diện(công việc của Front-end), người ta có thể mua hoặc tải miễn phí những mẫu giao diện có sẵn để tiết kiệm thời gian và chi phí trong việc lập trình trang web Tuy nhiên, thường để lập trình được phía sau đòi hỏi người làm Back-end phải có kiến thức về việc thiết kế Web vì vậy có thể nói 2 việc này bổ trợ cho
nhau
2 Cần chuẩn bị những kiến thức gì trước khi học Lập trình Web?
Để học ta cần phải có tất cả những kiến thức về Thiết kế Web như:
HTML, CSS, Javascript
Cách dùng thư viện Bootstrap
Tinh thần ham học hỏi và một bộ não bình thường
Ngoài ra, một số kỹ năng Google, tự rà lỗi và sửa chúng sẽ là một kỹ năng quang trọng Tôi luôn khuyến khích học hỏi từ nhiều nguồn để có thể cải thiệ kỹ năng của mình
Trang 10Vậy là chúng ta đã khởi động xong, không để bạn đợi lâu nữa, nào chúng ta cùng bắt đầu khởi hành trên cuộc thành trình này nhé!
Trang 11Chương 2: Nhập môn ASP.NET và mô hình MVC
1 Mô hình MVC là gì?
MVC: viết tắt của Model – View – Controller
(Hình 2.1 – Mô hình MVC)
“Mô hình Model – View – Controller (MVC) là một mẫu kiến trúc lâu đời trong
việc phát triển phần mềm, nó chia ứng dụng ra làm 3 thành phần: Models, View
và Controllers Mẫu hình này được tạo ra nhằm tách biệt các mối quan tâm với nhau, giúp việc triển khai một ứng dụng trở nên dễ dàng hơn Nó hoạt động bằng cách chuyển các yêu cầu của người dùng đến Controller, cái mà sẽ chịu trách nhiệm làm việc với Model để có thể xử lý các yêu cầu của người dùng như truy xuất kết quả Controller cũng có nhiệm vụ chọn View để hiển thị trả về cho người dùng và cung cấp bất cứ dữ liệu nào mà người dùng mong muốn.”
Về cấu trúc và cách hoạt động của nó có thể hình dung đơn giản như sau
Trang 12
(Hình 2.2 – Minh hoạ mô hình MVC)
Ta sẽ chia source code ra làm 3 phần:
View sẽ hiển thị ra phần nhập form tiêu đề và nội dung
Controller lấy dữ liệu từ 2 trường và gửi tới Model
Model lúc này sẽ nhận dữ liệu từ Controller để lưu trữ trong cơ sở dữ liệu
Bạn có thể tưởng tượng, khi một yêu cầu từ máy client gửi tới server, Controller sẽ thực hiện nhiệm vụ của mình đó là tiếp nhận và xử lý yêu cầu Trong trường hợp cần thiết, nó có thể liên hệ Model(bộ phận làm việc với database) để hỗ trợ Khi xử lý xong yêu cầu, kết quả sẽ được trả về View Tại View sẽ tạo mã HTML thành giao diện và trả về hiển thị trên trình duyệt Việc “chia để trị” này góp phần giúp cấu trúc MVC trở nên rõ ràng tạo hiệu quả cao trong việc phát triển phần mềm hay ứng dụng web
Vậy là ta đã hiểu sơ lược về mô hình MVC, giờ việc áp dụng nó vào thực tế chúng ta cùng tìm hiểu tiếp theo nhé
2 Tìm hiểu về ASP.NET MVC
Dựa trên nền tảng của mô hình MVC, Microsoft đã tạo ra ASP.NET MVC nhằm hiện thực hoá mô hình MVC trên quá trình phát triển ứng dụng Web
Trang 13(Hình 2.3 – Mô tả phạm vi hỗ trợ ASP.NET)
ASP.NET MVC là một thư viện để phát triển ứng dụng web (web application
development framework) được phát triển bởi Microsoft, vốn được kế thừa từ NET Framework Nó giúp việc phát triển một ứng dụng web trở nên đơn giản,
rõ ràng và sạch đẹp bằng cách tách biệt những phần code với nhau Chúng ta có thể mở rộng và tuỳ chỉnh mã nguồn một cách dễ dàng
Đồng thời đây cũng là phương pháp phát triển web mạnh nhất và phổ biến nhất trên nền ASP.NET hiện nay Mô hình MVC phù hợp với các dự án với các đội ngũ làm việc độc lập với nhau, như vậy các công việc đều có thể được thực hiện một cách linh hoạt
(Hình 2.4 – Minh hoạ cấu trúc MVC) Theo trang magenest.com thì ASP.NET MVC sẽ có tổng cộng tất cả các ưu và
nhược điểm sau:
Trang 14Ưu điểm:
- Hỗ trợ quá trình phát triển nhanh chóng: Với đặc điểm hoạt động độc lập của
từng thành phần, các lập trình viên có thể làm việc đồng thời trên từng bộ phận khác nhau của mô hình này MVC giúp bạn tiết kiệm rất nhiều thời gian
- Khả năng cung cấp đồng thời nhiều khung View: Với mô hình MVC, bạn có
thể tạo ra đồng thời nhiều khung View cho Model
- Hỗ trợ các kỹ thuật không đồng bộ: MVC có thể hoạt động trên nền tảng
JavaScript Điều này có nghĩa là các ứng dụng MVC có thể hoạt động với các file PDF, các trình duyệt web cụ thể, và cả các widget máy tính
- Dễ dàng thao tác chỉnh sửa: Bộ phận Model hoạt động tách biệt với View đồng
nghĩa với việc bạn có thể đưa ra các thay đổi, chỉnh sửa hoặc cập nhật dễ dàng ở từng bộ phận
- Giữ nguyên trạng thái data: Mô hình MVC truyền lại dữ liệu nhưng không định
dạng lại dữ liệu Do đó, các dữ liệu này có thể được dùng lại cho các thay đổi sau này
- Hỗ trợ các nền tảng phát triển SEO: Với mô hình MVC, bạn có thể dễ dàng
tạo ra các mã SEO URL để thu hút lượng truy cập đối với ứng dụng bất kỳ
Nhược điểm:
- Khó khăn trong quá trình điều hướng code: Điều hướng khung có thể phức
tạp vì mô hình này bao gồm nhiều lớp và yêu cầu người dùng thích ứng với các tiêu chí phân tách của MVC
- Không thích hợp việc phát triển các ứng dụng nhỏ: Vì mô hình này yêu cầu
bạn lưu trữ một số lượng lớn các file
- Nhiều khung hoạt động đồng thời: Việc phân tách một tính năng thành ba bộ
phận khác nhau dễ dẫn đến hiện tượng phân tán Do đó, đòi hỏi các nhà phát triển phải duy trì tính nhất quán của nhiều bộ phận cùng một lúc
(Nguồn: https://magenest.com/vi/mo-hinh-mvc-la-gi/)
Phương thức hoạt động:
Trang 15Được kế thừa từ ý tưởng của mô hình MVC, ASP.NET MVC cũng được chia làm 3 tầng
mã nguồn:
Model (tầng business – business layer)
View (tầng hiển thị – display layer)
Controller (điều khiển đầu vào – input control)
Cụ thể nó sẽ có ý nghĩa như sau:
Model: là một thành phần (component) trong mô hình MVC để quản lý dữ liệu kinh
doanh hoặc dữ liệu miền, tức là trạng thái của ứng dụng trong bộ nhớ Đây thường là
những lớp (class) đại diện cho dữ liệu có thể được truy xuất bởi View và Controller
Một model sẽ có cấu trúc như sau dưới ngôn ngữ C#:
(Hình 2.5)
View: là một thành phần để tương tác với người dùng, đó là tất cả những gì phía người
dùng (người truy cập website) có thể nhìn thấy và tương tác Đó chính là những dữ liệu
được xuất ra với dạng một giao diện có thể tương tác.Những View này, nó hỗ trợ tất cả những cú pháp để chúng ta có thể thiết kế web với ngôn ngữ HTML Có một điều khác biệt là chúng ta có thể viết C# để chạy cùng với HTML (hay còn gọi với một cái tên khác là Razor) để xử lý những yêu cầu cũng như truy xuất dữ liệu phía Controller
Trang 16Đây là một mẫu view viết với ngôn ngữ Razor:
(Hình 2.6 – Code mẫu ngôn ngữ Razor)
Controller: Là một lớp chứa những public methods được gọi là những Action, nó giúp
xử lý những yêu cầu từ phía trình duyệt Đây thường là những lớp (class) được kế thừa
từ System.Web.Mvc.Controller Thành phần này tương tác với cả Model và View, nó
chứ a những Action Method giúp xử lý những URL truy cập đến Thông thường, ta sẽ
dùng những class này để truyền dữ liệu ra giao diện View
Đây là một Controller mẫu:
Trang 17(Hình 2.7 – Code mẫu Controller)
Cho nên trong một project sẽ có tương ứng 3 thư mục chứa mã nguồn tách biệt nhau
(Hình 2.8 – Cấu trúc thư mục của một project MVC)
Vậy tại sao ta NÊN sử dụng ASP.NET trong việc phát triển ứng dụng web
Ưu điểm nổi trội lớn nhất của ASP.NET này ở chỗ nó tách phần code và giao diện ra thành các thành phân riêng biệt, điều này đặc biệt quan trọng vì nó giúp tối ưu hoá quy
Trang 18trình phát triển ứng dụng, giúp dễ quản lý, bảo trì nhưng vẫn đảm bảo hiệu suất cao nhất trong quá trình vận hành sử dụng
3 Cách để tạo một project ASP.NET MVC trên Visual Studio
Lưu ý: Phần cài đặt Visual Studio ta sẽ không nói ở đây, tuy nhiên phần này rất đơn giản, bạn có thể cài bất kỳ phiên bản nào miễn là từ đời 2013 trở đi
Bước 1: Bạn mở Visual Studio lên, chọn File -> New -> Project, một cửa sổ New Project
sẽ hiện lên Trong cửa sổ này, phần bên trái, bạn chọn Visual C#, phần bên phải chọn ASP.NET Web Application, đặt tên dự án là gì cũng được rồi nhấn Next
(Hình 2.9- Bảng chọn loại dự án Visual Studio)
Bước 2: Lúc này phần mềm sẽ cho bạn các lựa chọn template bạn muốn, ở đây để cho nhanh, chúng ta chọn MVC phần mềm sẽ tự thiết lập ra những file cần thiết Sau đó bạn
nhấn Next
Trang 19(Hình 2.10 – Bảng lựa chon template)
Đợi một lúc chương trình sẽ hiện lên cửa số soạn thảo, nếu để ý bên phía tay phải, bạn
sẽ thấy các thư mục của dự án như sau:
(Hình 2.11 – Cấu trúc thư mục mới tạo)
References: là nơi lưu trữ, thêm/bớt các thư viện DLL có liên quan đến website
Trang 20 App_Data: là nơi chứa cơ sở dữ liệu dạng tập tin MDF, để làm dự án thuận tiện
bạn nên chọn làm cơ sở dữ liệu dạng này
App_Start: chứa các lớp cấu hình sẽ kích hoạt chạy trước khi dự án web chạy
Content: chứa các tập tin nội dung như css, image, … bạn có thể thay đổi tập tin
này nếu muốn
Controllers: nơi chứa các lớp điều khiển cho dự án, chính là Controller trong 3
thành phần MVC (model-view-controller)
Models: nơi chứa mô hình, cũng là 1 trong 3 thành phần MVC fonts,
Script: chứa dạng font và mã JavaScript, phần này giúp xây dựng giao diện
website, bạn có thể thay đổi tùy ý
Views: chứa các cshtml để hiển thị giao diện, cũng là 1 trong 3 thành phần MVC
Web.config: chứa cấu hình web, rất quan trọng
Global.asax: chứa lớp cấu hình Session, Cookies, Application cho dự án
Để tránh rối rắm, tạm thời bạn chỉ nên quan tâm nến 3 thư mục Controllers, Views
và Models Mặc dịnh khi chọn tuỳ chọn MVC, hệ thống sẽ cài đặt Boostrap và tự
sinh ra 3 trang có sẵn là Home, About và Contact, bạn sẽ thấy có 3 trang chính này nằm thanh menu khi khởi chạy
Trang 21(Hình 2.12 – Giao diện dự án vừa tạo)
Như vậy là bạn đã tạo thành công một project ASP.NET MVC sẵn sàng cho việc phát triển ứng dụng Bây giờ chúng ta sẽ đi vào chi tiết các thành phần bên trong của nó
4 Các phương thức nền tảng để kết nối trong mô hình MVC
Như đã biết thì mô hình MVC gồm 3 thành phần được kết nối với nhau Để hiểu rõ hơn cụ thể chúng kết nối với nhau như thế nào trong lập trình ta sẽ đi từng bước vào nguồn cội, cách một Controller được tạo ra
Cụ thể trong Visual Studio, chúng ta có thể dễ dàng tạo ra một Controller bằng cách click trái chuột vào thư mục Controller trên thanh thư mục bên phải theo hướng dẫn như hình
(Hình 2.13 - Nguồn ảnh WebProgramming Lecture– Nguyen Mai Huy)
Trang 22Sau khi tạo xong ta sẽ thấy có một file cs có dạng như sau:
(Hình 2.14 – Cấu trúc mặc định Controller)
Hàm Index() với kiểu dữ liệu ActionResult này sẽ là nơi mà Controller trả về một
View, tức một giao diện cho Website, từ đây, ta có thể tạo View và Vỉew này sẽ được truy cập thông qua đường dẫn: http://localhost/Home/Index
Luôn luôn đi đúng thứ tự: http://localhost/{Controller}/{View}
Những điều này được cấu hình bởi file RouteConfig.cs của hệ thống Đương nhiên chúng ta luôn có thể tuỳ chỉnh nó lại sao cho phù hợp với mục đích sử dụng
(Hình 2.15 - Nguồn ảnh WebProgramming Lecture – Nguyen Mai Huy)
Trang 23Ngoài ra, chúng ta còn có thể truyền tham số qua hàm Index() để phục vụ việc truyền
dữ liệu vào View Trong quá trình này chúng ta có thể tính toán, xử lý dữ liệu rồi
mới đưa ra cho phù hợpc với mục đích sử dụng
Ví dụ về việc Truyền tham số:
(Hình 2.16 - Nguồn ảnh WebProgramming Lecture – Nguyen Mai Huy)
5 Vậy thì trong View ta có thể làm được gì?
Trước khi bàn về điều này ta nên tìm hiểu một khái niệm về _Layout
Như chúng ta thấy thì hầu hết các Website hiện nay đều có một mẫu hình nhất định
Hay còn gọi là template pattern
(Hình 2.17 – Phân chia phần Layout)
Trang 24Cho nên ở các trang khác nhau luôn có một hoặc một vài thành lần lặp đi lặp lại, mà việc này nếu mỗi trang mỗi code sẽ gây khó khăn cho việc phát triển cũng như dư
thừa code Từ lẽ đó người ta đã cho ra khái niệm Layout để chọn làm một trang cố định với một số thành phần cố định và chỉ thay đổi các thành phần cần thay đổi trong trang để tái sử dụng mã nguồn
Từ đó, chúng ta sẽ load lên sự thay đổi thông qua hàm @RenderBody của thư viện
HTML Helper được hỗ trợ sẵn trong ASP.NET
Cụ thể thì trong thư mục Shared của Views sẽ có một file là _Layout.cshtml Ở file
này ta viết tất cả code của thành phần không thay đổi qua các trang ví dụ như Header, Footer và thành phần thay đổi, ở đây là thường là phần giữa 2 phần trên ta gọi nó là
Body sẽ được gọi ra bằng hàm @RenderBody()
(Hình 2.18 – Hàm RenderBody)
Ở trong vần View ta sẽ chỉ cần viết phần Body, hệ thống sẽ tự ghép nối lại tạo nên
một trang hoàn chỉnh với đủ các thành phần
6 HTML Helper là gì?
Như đã nói ở trên thì trong View, ta viết ngôn ngữ Razor Đây là sự kết hợp giữa HTML và C# Và HTML Helper có thể hiểu nó là một đoạn code C# được viết trong
View nhằm đơn giản hoá việc viết code HTML
Ví dụ đơn giản như sau:
(Hình 2.19 – Tạo Input với HTML Helper)
Ta thấy việc sử dụng Razor làm code ngắn hơn rất nhiều và có khả năng tuỳ biến rất
cao vì ta có thể dễ dàng truyền dữ liệu vào một cách nhanh chóng
Trang 25(Hình 2.20 – Một số phương thức HTML Helper thông dụng)
Trên là một số những hàm HTML Helper thông dụng
Tuy vậy, nhưng để truyền được những tham số từ Controller sang View ta cần một cầu nối để có thể truyền tải được tài nguyên Ở đây tôi xin giới thiệu 2 thuộc tính là
ViewBag và ViewData
7 Vậy ViewBag và ViewData là gì?
1 ViewBag
Ta có thể hiểu đơn giản, ViewBag là một thành phần trong ASP.NET MVC
giúp truyền dữ liệu từ Controller về View (không bao gồm Model)
(Hình 2.21 – Mô hình ViewBag)
Cách sử dụng:
Để sử dụng thì rất đơn giản, từ ActionResult ta khai báo:
ViewBag.<Tên đối tượng> = <Giá trị cần gán>;
Ví dụ:
Trang 26(Hình 2.22- Ví dụ ViewBag)
Rồi từ View ta truyền vào bằng cách khai báo ở vị trí cần xuất:
@ViewBag.<Tên đối tượng>
Vậy là ta đã truyền được dữ liệu mình cần
2 ViewData
Tương tự như ViewBag, ViewData cũng là một thành phần dùng để truyền
dữ liệu từ Controller về View Nó chỉ khác ở chỗ, ViewData sử dụng kiểu Dictionary (Từ điển) để truyền dữ liệu về, nên cấu trúc khai báo sẽ hơi khác một chút
(Hình 2.23 – Mô hình ViewData)
Cách sử dụng:
Để sử dụng thì ta khai báo như sau:
ViewData[“<Tên đối tượng>”] = <Giá trị cần gáng>
Ví dụ ta truyền một List vào View:
Trang 27(Hình 2.24 – Ví dụ gán giá trị ViewData)
Để xuất ra view ta khai báo:
ViewData["<Tên đối tượng>"]
Xuất ra giá trị từ ví dụ trên:
(Hình 2.25 – Ví dụ lấy giá trị ViewData)
Cũng không khó lắm đâu nhỉ Tuy nhiên còn một vấn đề ta vẫn chưa đề cập đến
chính là Model Chúng có tác dụng gì và sử dụng cụ thể như thế nào trong thực
chiến
8 Model trong ASP.NET
Về lý thuyết tôi đã đề cập ở trước, đây là nơi chúng ta có thể xây dựng những hàm hoặc các lớp đối tượng để có thể “sẵn có” sử dụng trong quá trình lập trình
Ví dụ: Giả sử ta lập trình một website tính chu vi diện tích các hình vuông, tròn, tam
giác Thì việc tạo ra các đối tượng hình học và các hàm dùng để tính diện tích chu vi
để gọi ra sử dụng sẽ tiện lợi hơn rất nhiều so với việc chúng ta viết “dồn” tất cả code
Trang 28vào Controller Để làm được điều này, ta tạo ra những class trong thư mục Models chứa các phương thức cần thiết và chỉ cần gọi ra khi cần chạy Hiểu đơn giản, Models
như một tập hợp các mã nguồn được ta thiết kế sẵn để gọi ra sử dụng trong quá trình code giúp việc phát triển web trở nên đơn giản hơn rất nhiều
(Hình 2.26 - Hình minh hoạ về đối tượng hình vuông trong model)
Vậy là chúng ta đã tìm hiểu qua phần lý thuyết và cách tạo một ứng dụng web ASP.NET MVC cụ thể trên Visual Studio Tiếp theo ta sẽ tìm hiểu về cách để kết
nối cơ sở dữ liệu (database) cho ứng dụng web của mình
Trang 29Chương 3: Kết nối cơ sở dữ liệu trong ASP.NET
Quay ngược dòng lịch sử thì khi xưa, mỗi khi chúng ta cần truy xuất cơ sở dữ liệu từ đến server khá khó khăn và có phần hơi tẻ nhạt vì người lập trình phải làm thủ công những công đoạn như kết nối, viết mã SQL, chuyển đổi mô hình dữ liệu qua lại sao cho phù hợp cho từng tình huống cụ thể Việc này mất nhiều thời gian và khả năng cao sẽ có sai sót trong quá trình chuyển dịch các mô hình dữ liệu giữa 2 nền tảng
(Hình 3.1 – Minh hoạ về việc lưu trữ)
Do đó Entity Framework ra đời với mục đích làm giảm nhẹ bớt phần việc này, giúp
việc lập trình kết nối dữ liệu trở nên dễ dàng hơn
Trước khi tìm hiẻu về Entity Framework thì ta nên biết về một khái niệm về O/RM
- O/RM có thể được hiểu đơn giản như một công cụ đóng vai trò như một cây cầu
để tự động chuyển dữ liệu dạng bảng (ví dụ như: table trong MS SQL Server) sang dạng đối tượng (Class Object) trong ngôn ngữ lập trình và ngược lại
Trang 301 Vậy Entity Framework là gì?
- Bản chất của Entity Framework chính là một O/RM, ra đời nhằm hỗ trợ việc tương tác giữa các nền tảng NET với cơ sở dữ liệu trở nên đơn giản và dễ dàng
hơn bằng cách “ánh xạ” các đối tượng trong ứng dụng lập trình với các bảng
trong cơ sở dữ liệu được kết nối Nhưng vẫn đảm bảo sự tương đồng kiểu dữ
liệu (type) trong việc chuyển giao (mapping) các thuộc tính giữa 2 môi trường
- Điểm mạnh nhất của Entity Framework là nó giúp nhà phát triển tương tác với
cơ sở dữ liệu theo phương pháp hướng đối tượng, điều này đặc biệt quan trọng
vì nó giúp giảm thiểu việc lập trình mã nguồn khi thực hiện tương tác cơ sở dữ liệu
Trang 31(Hình 3.3 - Cấu trúc của một Entity Framework)
2 Vì sao nên sử dụng Entity Framework?
Các lợi ích khi sử dụng:
+ Nếu bạn thực hiện một truy vấn dữ liệu Bạn có thể sử dụng Linq to Entities để
thao tác các đối tượng được tạo từ Entity Framework, có nghĩa là bạn không
phải viết mã SQL
+ Dễ dàng cập nhật các lớp và lệnh mỗi khi cơ sở dữ liệu thay đổi, giúp tiết kiệm rất nhiều thời gian
+ Entity Framework sẽ tự động tạo các lớp và lệnh tương ứng để chọn, chèn,
cập nhật và xóa dữ liệu khỏi cơ sở dữ liệu quan hệ
+ Entity Framework tự động tạo các lớp để truy cập cơ sở dữ liệu, giúp người
lập trình giảm thời gian viết mã để thao tác với cơ sở dữ liệu Hỗ trợ bạn không phải mất quá nhiều thời gian viết code để vận hành cơ sở dữ liệu
3 Các tình huống sử dụng Entity Framework
- Trước khi tìm hiểu về cách thức sử dụng, ta cần tìm hiểu 3 tình huống sử dụng
phổ biến, từ đó sẽ thiết lập cấu trúc ứng dụng cho phù hợp
1 Database First: Dùng khi bạn đã có sẵn một CSDL (database) trước đó Sau
đó từ đây Entity Framework sẽ tự sinh ra những thành phần Class trong C#
được ánh xạ bởi CSDL trên Database First thường được dùng trong các ứng dụng quy mô lớn
(Hình 3.4 – Database First)
Trang 322 Code First: Dùng khi ta muốn tập trung vào các tạo các class trước Entity Framework sẽ tự sinh ra các table database từ các Class đó Code First
thường được dùng cho các ứng dụng nhỏ
(Hình 3.5 – Code First)
3 Model First: Dùng khi ta muốn thiết kế Schema của CSDL trên Entity Data
Model Designer (EDMX), tức là ở đây ta không có CSDL (database) và
không có cả các Class mà sẽ dùng giao diện thiết kế của EDMX để tạo cấu trúc lưu trữ Từ đó Entity Framework sẽ tự sinh ra các Database và các
Class
(Hình 3.6 – Model First)
4 Sử dụng Entity Framework như thế nào?
Để sử dụng trên Project hiện tại thì trên Visual Studio của chúng ta làm như sau:
Trang 33Bước 1: Trong Solution Explorer, chuột phải lên project => chọn Add => chọn
New Item…
(Hình 3.7 – Thêm Item)
Bước 2: Chọn Visual C# Items => chọn ADO.NET Entity Data Model => nhập
tên DB (ví dụ: DatabaseFirstModel) => chọn Add
(Hình 3.8 – Chọn ADO.NET Entity Data Model)
Bước 3: Ở đây ta sẽ chọn tình huống sử dụng Entity Tôi sẽ chọn EF Designer from database => chọn Next
Trang 35Trong trường hợp bạn chọn New Connection… => chọn tên máy chủ (Server
name), chọn cơ sở dữ liệu (Database name) => chọn OK
(Hình 3.11 - Cài đặt Server và Tên Database)
Trang 36(Hình 3.12 – Bảng hiện chuỗi Connection string)
Tại đây lưu ý Connection string đây là một đoạn mã giúp cho việc kết nối ứng
dụng tới cơ sở dữ liệu Việc để lộ mã này khá nguy hiểm vì nó sẽ giúp kiểm soát
cơ sở dữ liệu
Bước 5: Chọn table, kiểm tra kỹ lại tên muốn đặt trên App.Config
Trang 37(Hình 3.13 – Chọn loại Database muốn thêm vào)
Bước 6: Chọn Finish để hoàn tất Và đây là kết quả:
(Hình 3.14 – Các file cài đặt cơ sở dữ liệu được sinh ra)
Vậy là xong, chúng ta đã hiểu qua về khái niệm Entity Framework và cách sử
dụng của nó Nhưng để dùng các câu lệnh truy vấn để có thể thao tác với cơ sở
dữ liệu thì chúng ta nên biết về một khái niệm có tên gọi là LINQ
5 Vậy LINQ là gì?
(Hình 3.15 – Logo LINQ)
Trang 38- LINQ (Language Integrated Query) tạm dịch là ngôn ngữ truy vấn tích hợp
Hiểu đơn giản thì đây là một ngôn ngữ có cú pháp gần giống với SQL nhưng có một ưu điểm là nó để sử dụng để truy vấn đa nguồn dữ liệu trong C# và VB.NET
- Như đã biết thì dữ liệu có thể được lưu trữ ở nhiều dạng khác nhau (XML, MySql,
MS SQL Server, Objects, Entities, ) mà mỗi dạng lại có những cách và quy ước
truy vấn khác nhau Vì vậy Microsoft họ đã cho ra đời LINQ để sử dụng duy nhất một ngôn ngữ nhưng truy vấn được nhiều dạng dữ liệu khác nhau
- Những thuộc tính cơ bản khi sử dụng LINQ:
From – Where – OrderBy – GroupBy – Select
Ví dụ mình hoạ:
(Hình 3.16 – Cách dùng LINQ)
Kết quả: In ra những số có giá trị lớn hơn 5
Ngoài ra chúng ta còn có một cách khác để truy vấn bằng cách dùng LINQ Method:
Trang 39(Hình 3.17)
Với dạng Method thì để sử dụng ta cần viết truy vấn sử dụng Lambda Expression
Ngoài ra LINQ còn có những cú pháp thống kê như: Max, Min, Sum, Count, Average, Lấy dữ liệu theo vị trí như: First, Last, ElementAt, Take, Skip,…
Tìm hiểu thêm tại:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries
Trang 40Chương 4: Lưu trữ và theo dõi người dùng
1 Vậy “Đối tượng ngầm định” là gì?
- Đây là những đối tượng mặc định được tạo ra khi người dùng truy cập vào ứng
dụng web Nó lưu trữ những thông tin cơ bản về hệ thống, trạng thái hoạt động của ứng dụng, lưu trữ trạng thái, quá trình làm việc của hệ thống, Đây là những thông tin mà người lập trình có thể khai thác để phục vụ nhiều mục đích khác
nhau
Ví dụ: Việc biết được vị trí của người dùng ở đâu sẽ giúp shop tính toán được
những mặt hàng có sẵn gần họ nhất hoặc là biết được người dùng thường dùng trình duyệt gì để truy cập từ đó tối ưu website cho trình duyệt đó hay là dùng