1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CMP223 lap trinh web bai giang

95 385 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 95
Dung lượng 6,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Mở file Models/IdentityModel.cs - IdentityUser là một phần của ASP.NET Identity, hỗ trợ xử lý các chức năng cơ bản liên quan tới việc xác thực người dùng như đăng ký, đăng nhập, đổi mậ

Trang 1

MỤC LỤC

1 LÀM QUEN VỚI ỨNG DỤNG WEBSITE ASP NET MVC 2

1.1 Cơ bản về MVC 5 và các yêu cầu cần thiết để viết Web Application MVC 5 2

1.1.1 Yêu cầu 2

1.1.2 Các bước cài đặt MVC5 2

2 VIẾT TRANG WEB QUẢN LÝ SÁCH (BOOK) VỚI ASP NET MVC 9

3 THỰC HÀNH THEO DỰ ÁN WEBSITE BIGSCHOOL 22

3.1 Mục tiêu bài thực hành 22

3.2 Công nghệ sử dụng 22

3.3 Mô tả yêu cầu 23

3.4 Phần mềm 23

3.5 Phân tích yêu cầu của ứng dụng BigSchool 23

3.5.1 Xác định các usecase trong dự án 23

3.5.2 Phân tích use case 24

3.5.3 Thứ tự use-case sẽ thực hiện 25

3.6 Xây dựng ứng dụng bằng ASP NET MVC 25

3.6.1 Tạo cơ sở dữ liệu theo mô hình EF Code First 25

3.6.2 Use-case: Thêm mới khóa học 30

3.6.3 Ghi đè CSS mặc định của Bootstrap 46

3.6.4 Thêm mới thuộc tính trong Asp.Net Identity Users 49

3.6.5 Hiển thị danh sách các khóa hoặc sắp diễn ra tại trang chủ 50

3.6.6 Bổ sung thuộc tính Name vào màn hình đăng ký, cho phép người dùng nhập tên (Form Sign up) 51 3.6.7 Chỉnh sửa giao diện trang chủ: danh sách khóa học sắp diễn ra 54

3.6.8 Use-case: Đăng ký tham dự khóa học 56

3.6.9 Use-case theo dõi Giảng viên 64

3.6.10 Xem danh sách khóa học đăng ký tham dự 70

3.6.11 Use-case Quản lý Khóa học (Xóa, cập nhật) 74

3.6.12 Use-case thông báo (notification) 87

3.6.13 Tách file javascript trong ứng dụng 93

Trang 2

1 LÀM QUEN VỚI ỨNG DỤNG WEBSITE ASP NET MVC

1.1 Cơ bản về MVC 5 và các yêu cầu cần thiết để viết Web Application MVC 5

website http://www.microsoft.com/en-us/download/41532 tải gói nâng cấp và cài đặt theo hướng dẫn

Chú ý: Tất cả các hình ảnh trong các bài LAB đều được thực hiện trên Visual Studio 2013 & Visual

Studio 2015

Bước 1: Tạo mới ứng dụng ASP.NET MVC 5

Bạn có thể tạo mới ứng dụng web ASP MVC 5 trên cả hai phiên bản Visual Studio 2013, 2015 hoặc Visual Studio 2013, 2015 Express

Để tạo mới một ứng dụng MVC

- Chọn File  New Project

Trang 3

Trong phần các mẫu Teamplate đã được cài đặt, chọn Visual C#  Web Template

Sau khi tạo mới Web Application MVC5, cửa sổ tiếp theo hiện lên chọn MVC

Trang 4

Sau khi chọn xong các bước trên, bạn có được ứng dụng mẫu MVC Application với các thành phần mở rộng

được thêm vào sẵn, cấu trúc như hình

Trang 5

Cấu trúc của một MVC Web Application

/Controllers Thư mục chứa các lớp xử lý gọi là Controller

/Models Thư mục chứa các lớp đối tượng Model

/Views Thư mục đặt các mẫu giao diện View

/Scripts Thư mục chứa các bộ thư viện javascript được tích hợp vào sẵn

của MVC hoặc là nơi bạn tổ chức và đặt các thư viện Javascript

mà mình tự phát triển /fonts Chứa các mẫu font của thư viện Bootstrap

/Contents Đặt CSS, hình ảnh hoặc các file javascript

/App_Data Chứa database local

Trang 6

nén CSS, javascript để giảm kích thước)

Trang 7

Cấu trúc xử lý để chạy một trang web MVC mặc định là :

http://Localhost:Port:/{Controller}/{Action}/{Id}

Trang 9

2 VIẾT TRANG WEB QUẢN LÝ SÁCH (BOOK) VỚI ASP NET MVC

Tạo Model Book

File Hình ảnh bìa sách (Sinh viên tự lấy một số hình ảnh đưa vào thư mục như hình để demo)

Trang 10

Đặt tên BooksController.cs

Trang 11

Nhấn chuột phải vào hàm ListBooks, chọn Add View…

Trang 12

File Views/Books/ListBooks.cshtml

File App_Start/RouteConfig.cs

Trang 13

Xem kết quả khi chạy website

Xem kết quả trên thiết bị di động

Trang 14

Xem chi tiết một cuốn sách (Book Detail)

Chỉnh sửa file Views/Books/ListBook.cshtml

Trang 15

Xem Link

Trang 16

Trang Views/Books/Detail.cshtml

Trang chỉnh sửa Sách (Edit Book)

File Views/Books/ListBooks.cshtml

Trang 17

File BooksController.cs

Kiểm tra file Views/Books/Edit.cshtml đã tồn tại

Trang 18

Chạy ứng dụng, kiểm tra kết quả

Viết hàm lưu kết quả sau khi chỉnh sửa

* Ràng buộc dữ liệu nhập

File Models/Book.cs

Trang 19

File Views/Books/Edit.cshtml

Chạy ứng dụng và kiểm tra kết quả

Trang 20

*Viết hàm lưu kết quả

File Controllers/BooksController.cs

Trang 21

Chạy ứng dụng để kiểm tra kết quả, lưu thành công sẽ trả về trang danh sách với kết quả mới

Trang 22

3 THỰC HÀNH THEO DỰ ÁN WEBSITE BIGSCHOOL

3.1 Mục tiêu bài thực hành

- Xây dựng giao diện người sử dụng: HTML, CSS, Bootstrap

- Xây dựng các cấu trúc tái sử dụng

- Mô hình Entity Framework code First work-flow

- Restful APIs

- Lập trình Ajax

- Bảo mật, phân quyền

- Thiết kế phần mềm hướng đối tượng

Trang 23

3.3 Mô tả yêu cầu

Xây dựng mạng xã hội quản lý và theo dõi các khóa học trực tuyến (gọi tắt là BigSchool) Webstie Mạng xã hội học tập BigSchool cung cấp các chức năng cơ bản:

- Người học có thể dễ dàng theo dõi các khóa học của Giảng viên yêu thích Thêm khóa học vào danh sách đăng ký tham dự Theo dõi Giảng viên để nhận các thông tin về khóa học mới

- Người học có thể xem tất cả các khóa học sắp được mở theo giảng viên hoặc tìm kiếm theo các thông tin như tên giảng viên, chủ đề khóa học, địa điểm khóa học

- Giảng viên có thể đăng ký mở khóa học, bao gồm các thông tin ngày/ giờ, địa điểm

và chủ đề của khóa học Giảng viên có trang quản lý khóa học để có thể chỉnh sửa, cập nhật khóa học

3.4 Phần mềm

Sử dụng các phần mềm sau để thực hành:

- IDE: Visual studio community 2015

- MSSQL Server >= 2008

- [Tùy chọn] cài đặt các Extension cho VS 2015 (Tool  Extension & Update)

o ReSharper (free 30 trial license)

o Productivity Power Tools 2013 (free)

o Web Essentials 2015 (free)

3.5 Phân tích yêu cầu của ứng dụng BigSchool

3.5.1 Xác định các usecase trong dự án

- BigSchool là một dự án giúp quản lý và theo dõi khóa học

- Giảng viên đăng nhập và quản lý khóa học Khi thêm một khóa học có các thông tin địa điểm, thời gian, chủ đề khóa học

- Giảng viên có trang quản lý khóa học bao gồm: Thêm, sửa, xóa khóa học

- Học viên xem các khóa học, tìm kiếm theo tên giảng viên, chủ đề, địa điểm

- Học viên có thể xem chi tiết một khóa học và đăng ký tham dự

- Học viên có thể theo dõi Giảng viên Khi theo dõi Giảng viên nào đó, học viên có thể xem các khóa học sắp tới của giảng viên đó trong BigSchool Feed

Trang 24

3.5.2 Phân tích use case

3.5.2.1 Chứng thực người dùng (sử dụng ASP.NET Identity Package, được tích hợp trong ASP.NET

- Thay đổi mật khẩu

- Thay đổi thông tin cá nhân

- Xem chi tiết khóa học

3.5.2.3 Đăng ký tham gia khóa học

- Đăng ký tham dự

- Hủy đăng ký tham dự

- Xem các khóa học đã đăng ký tham dự

3.5.2.4 Theo dõi

- Theo dõi một giảng viên

- Bỏ theo dõi

- Danh sách người theo dõi

- Trang tin theo dõi (Big School Feed)

Trang 25

Hủy đăng ký tham dự

Theo dõi giảng viên

Danh sách người theo dõi

Bỏ theo dõi

Tìm kiếm Big school Feed Xem chi tiết

khóa học

3.6 Xây dựng ứng dụng bằng ASP NET MVC

Tạo mới Project ASP NET MVC trong IDE Visual studio 2015 Đặt tên project là BigSchool, và thực hiện theo hướng dẫn:

3.6.1 Tạo cơ sở dữ liệu theo mô hình EF Code First

- Tool/ Nuget package manager/ package manager console

o enable-migrations

Mỗi sự thay đổi trên domain model  sẽ tạo mới bản log migration và chạy migration để cập nhật database

Trang 26

- Mở file Models/IdentityModel.cs

- IdentityUser là một phần của ASP.NET Identity, hỗ trợ xử lý các chức năng cơ bản liên quan tới việc xác thực người dùng như đăng ký, đăng nhập, đổi mật khẩu, phân quyền,… vv

- Mở file Web.config cấu hình trỏ liên kết tới máy chủ chạy cơ sở dữ liệu, với tên tài

khoản và mật khẩu đăng nhập vào hệ quản trị CSDL

<connectionStrings>

<add name="DefaultConnection"connectionString="Data AT2MHH8;Initial Catalog=BigSchool;user id = sa; pwd = anh@; Integrated Security=True" providerName="System.Data.SqlClient" />

Source=DESKTOP-</connectionStrings>

- Mở Package Manager Console để tạo các Model của User

o Add-migration ‘InitialModel’

Trang 27

- Mở Package Manager Console chạy lệnh

o update-database: Tạo bảng trong CSDL MSSQL Server theo file migration vừa mới tạo ở bước trên (sau khi chạy lệnh này, mở chương trình quản lý database để kiểm tra CSDL BigSchool vừa được tạo)

- Tạo các Domain class của ứng dụng: Nhấn chuột phải vào thư mục Models  Add

 Class: đặt tên là Course.cs

Trang 28

- Nội dung file Course.cs

- Tách Class Category thành file mới, nằm trong thư mục Models

Trang 29

- Mở File Models/IdentityModel.cs

o Tách Class ApplicationDbContext ra một file riêng, thêm domain class

Course và Category

- Đổi tên File Models/IdentityModes.cs thành tên mới

Models/ApplicationUser.cs (tên lớp và tên file nên giống nhau để dễ quản lý

theo dõi thay đổi)

- Kết quả thư mục Models có

- Mở package Manager Console để tạo bản cập nhật database

o add-migration 'CreateTableCourse'

Trang 30

- Kết quả (xem database)

3.6.2 Use-case: Thêm mới khóa học

Một khóa học bao gồm các thông tin như: Chủ đề (chọn từ danh sách), địa điểm,

thời gian

3.6.2.1 Tạo mẫu dữ liệu các chủ đề của khóa học

- Mở package manager control

o add-migration PopulateCategoryTable

- Mở file migration PopulateCategoryTable.cs

- Mở Package manager control, cập nhật dữ liệu cho bảng Category

o update-database

Trang 31

- Kiểm tra dữ liệu trong bảng Category

3.6.2.2 Tạo Form thêm khóa học với Bootstrap

- Nhấn chuột phải vào thư mục Controller Chọn Add Controller Chọn

MVC5 Empty Controller

Trang 32

- Đổi tên ActionResult Index  Create, nhấn chuột phải vào tên Create Chọn Add View

- Thư mục mới được tạo ra Views/Courses và tên View vừa tạo bước trên

Create.cshtml

Trang 33

- Mở file Views/Courses/Create.cshtml, nhấn F5 để xem kết quả từ trình duyệt

- Sửa menu Contact Thành menu Create Course

o Mở file Views/Shared/_Layout.cshtml

- Mở trình duyệt, nhấn F5 để xem lại kết quả

- Mở file Views/Courses/Create.cshtml, chỉ định Model là Course

- Thêm các thành phần của khóa học như: địa điểm, thời gian

Trang 34

- Được kết quả

- Xây dựng Form với Bootstrap (xem thêm bootstrap tại địa chỉ:

http://getbootstrap.com/

Sử dụng ViewModel

Trang 35

- Tiếp tục xây dựng Form khóa học

- Tại Trường DateTime của Khóa học, cho phép người dùng nhập vào 2 giá trị

(ngày học và thời gian học)

- Tạo mới folder tên là ViewModels tại thư mục gốc

- Tạo File ViewModels/CourseViewModel.cs với nội dung:

- Sửa trang View thêm khóa học Views/Course/Create.cshtml (sử dụng model

mới CourseViewModel)

Trang 36

Thêm danh sách lựa chọn (Drop – down List) danh mục của khóa học

- Chỉnh sửa file ViewModels/CourseViewModel.cs

Trang 37

- Mở file Controllers/CourseController.cs

- Chạy ứng dụng và xem kết quả

Trang 38

* Thêm nút button Lưu kết quả trên Form (views/Course/Create.cshtml)

* Lưu dữ liệu khóa học

Xác thực quyền đăng nhập với ASP.NET Identity Chỉ cho phép người dùng có tài

khoản và đã đăng nhập vào hệ thống mới có thể thêm khóa học

- File Controllers/CourseController.cs

Trang 39

- Chạy ứng dụng website, vào trang thêm khóa học

(http://localhost:50528/Courses/Create), hệ thống sẽ yêu cầu đăng nhập

- Tạo tài khoản mới (Register as a new user) và đăng nhập trước khi vào trang

thêm mới khóa học

- File Views/Course/Create.cshtml

Trang 40

- File Controllers/CoursesController.cs

- Chạy ứng dụng web, kiểm tra kết quả (http://localhost:50528/Courses/Create)

Trang 41

* Ràng buộc dữ liệu nhập trên form thêm khóa học

Server-side Validation

- File ViewModels/CourseViewMode.cs

Hiển thị thông báo nếu không nhập dữ liệu có ràng buộc (bắt buộc nhập)

- File Views/Course/Create.cshtml

Trang 42

- File Controllers/CoursesController.cs (Kiểm tra dữ liệu nhập phía Server, trước

khi lưu vào cơ sở dữ liệu, nếu nhập sai yêu cầu lỗi sẽ được gửi lại trang đang thao

tác)

Trang 43

- Chạy ứng dụng web, thêm khóa học (chú ý: không nhập địa điểm hoặc các trường ràng buộc thì sẽ báo lỗi)

Trang 44

- Chạy ứng dụng web, kiểm tra ràng buộc custom validation tại ô Ngày, tháng khóa học (ngày nhập phải đúng định dạng dd/mm/yyyy và phải lớn hơn ngày hiện tại)

- Tương tự tạo Custom Validation cho ô nhập Time (Tạo mới file đặt tên là

ValidTime.cs nằm trong thư mục ViewModels) và chỉnh sửa file

CourseViewModel.cs (ViewModels/CourseViewModel.cs)

Trang 45

- Chạy ứng dụng web, nhập giá trị vào ô Time không hợp lệ và kiểm tra kết quả

* Client-side Validation (kiểm tra ràng buộc dữ liệu nhập ngay phía client trước khi gửi về server)

- File Views/Course/Create.cshtml

- Chạy ứng dụng, kiểm tra kết quả

Trang 46

* BẢO MẬT

Phòng chống lỗi tấn công CROSS SITE REQUEST FORGERY - CSRF (Dữ liệu

được gửi lên server, không phải từ web page trong hệ thống)

- File Views/Course/Create.cshtml, File Controllers/CoursesController.cs

3.6.3 Ghi đè CSS mặc định của Bootstrap

- Mở website bằng trình duyệt Chorme, nhấn chuột phải vào vùng muốn thay đổi CSS, chọn Inspect

Trang 47

- Điều chỉnh các thành phần CSS trên giao diện phù hợp theo mong muốn

- Copy nội dung CSS đã điều chỉnh, mở file Contents/Site.css hoặc tạo file CSS mới

để ghi đè các giá trị CSS mặc định của Bootstrap

- File Contents/Site.css

Trang 48

- Chạy lại ứng dụng để xem sự thay đổi giao diện

Điều chỉnh giao diện trang khung của website (Layout)

- File Views/Shared/ LoginPartial.cshtml

- Kết quả thanh menu

Trang 49

3.6.4 Thêm mới thuộc tính trong Asp.Net Identity Users

Các thuộc tính mặc định của bảng ASPNETUSERs (Bảng này chưa thông tin người dùng trong hệ thống như Giảng viên hoặc Học viên)

Bổ sung thêm thuộc tính Name (họ tên) vào bảng

- File Models/ApplicationUser.cs

- Mở Package Control Manager chạy lệnh

Trang 51

- Chạy ứng dụng web, xem kết quả trang chủ (http://localhost:50528/)

3.6.6 Bổ sung thuộc tính Name vào màn hình đăng ký, cho phép người dùng nhập tên (Form

Sign up)

- File Models/AccountViewModels.cs, Class RegisterViewModel

Trang 52

- File Views/Account/Register.cshtml

Trang 53

- File Controllers/AccountController.cs

- Chạy ứng dụng web, trang đăng nhập để xem kết quả

(http://localhost:50528/Account/Register)

Trang 54

3.6.7 Chỉnh sửa giao diện trang chủ: danh sách khóa học sắp diễn ra

- File Views/Home/index.cshtml

Trang 55

- File Content/Site.css

- Chạy ứng dụng web để xem kết quả (trang chủ)

Trang 56

3.6.8 Use-case: Đăng ký tham dự khóa học

Quan hệ nhiều – nhiều giữa hai bảng User và Course, Tạo bảng mới Attendance

(Tham dự)

- Tạo mới File Models/Attendance.cs

Attendance

Course User

Trang 57

- Sửa Models/ApplicationDbContext.cs

- Mở Package Manager Console chạy lệnh

o Add - Migration AddAttendance

o Update – database

Trang 58

Chức năng Học viên đăng ký tham dự khóa học (sử dụng Ajax & Restful API để không phải tại lại trang)

- Thêm mới File Controllers/AttendancesController.cs  Loại teamplate: Web

API 2 Controller

- Chọn Web API 2 Controller - Empty, đặt tên AttendancesController

- File Readme.txt hướng dẫn Enable Web API trong project

Trang 59

- Mở File Global.asax, copy đoạn code phía trên đưa vào với nội dung

- File Controllers/AttendancesController.cs

Trang 60

Sử dụng công cụ Postman để Test API

- Link tải Postman (https://www.getpostman.com/)

- Lấy thông tin đăng nhập tài khoản, nhấn nút SEND

Trang 61

- Lấy thông tin bảo mật Cross-Site Request Forgery (CSRF) (một phần của

ASP.NET Identity để bảo mật, phòng tránh lỗi CSRF), nhấn nút SEND

- Mở Postman và nhập các thông tin

Trang 62

- Nhấn nút SEND và xem kết quả kiểm tra test API khi thêm một dòng đăng ký mới

Trang 63

- Build ứng dụng và thử Test lại kết quả với Postman

*Thêm nút nhấn đăng ký tham gia khóa học

- File Views/Home/Index.cshtml

- Tạo thư mục DTOs nằm tại thư mục gốc ứng dụng Tạo file

DTOs/AttendanceDto.cs (DTO: Data transfer object, đóng gói và trao đổi dữ liệu

đối tượng giữa các tầng của ứng dụng)

Ngày đăng: 03/11/2019, 18:03

TỪ KHÓA LIÊN QUAN

w