ASP.NET 3.5 - Bài 3: Tổng quan về ASP.NET MVC Framework

1 Tại sao sử dụng ASP.NET MVC . 2

1.1 ASP.NET MVC là gì . 2

1.1.1 Mô hình MVC cơ bản . 2

1.1.2 Một vài đặc tính trong ASP.NET MVC . 2

1.2 Sự khác biệt với WebForm . 3

2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework . 4

2.1 Tạo Project vớ i ASP.NET MVC Web Application . 4

2.2 Tìm hiểu định tuyến URL . 8

2.3 Xây dựng mô hì nh dữ liệ u . 9

2.3.1 Ta ̣ o cơ sở dữ liệ u . 9

2.3.2 Sử dụ ng mô hì nh LINQ to SQL . 10

2.4 Tìm hiểu về Controllers . 14

2.5 Tìm hiểu về Views . 16

2.6 Tìm hiểu về Models . 18

2.7 Cấ u trú c Views\Shared\Site.Master . 20

2.8 Kế t quả . 21

3 Câu hỏi ôn tập . 21

4 Tài liệu tham khảo . 22

pdf22 trang | Chuyên mục: ASP.NET | Chia sẻ: dkS00TYs | Lượt xem: 2357 | Lượt tải: 2download
Tóm tắt nội dung ASP.NET 3.5 - Bài 3: Tổng quan về ASP.NET MVC Framework, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
gười dùng khi người dùng tạo ra một request trên browser. 
Một controller là một class ( C# class hoặc VB class). Trong ví dụ ứng dụng ASP.NET MVC Web Application 
mâũ luôn tồn taị 2 controller là AccountController.cs và HomeController.cs nằm trong folder Controllers 
HomeController.cs 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Ajax; 
namespace HiTest.Controllers 
{ 
 [HandleError] 
 public class HomeController : Controller 
 { 
 public ActionResult Index() 
 { 
 ViewData["Title"] = "Home Page"; 
 ViewData["Message"] = "Welcome to ASP.NET MVC!"; 
 return View(); 
 } 
 public ActionResult About() 
 { 
 ViewData["Title"] = "About Page"; 
 return View(); 
 } 
 } 
} 
Trong HomeController.cs có 2 phương thức là Index() và About(). Hai phương thức này là 2 action trong 
controller HomeController.cs nó thực hiện khi được gọi bằng địa chỉ /Home/Index và /Home/About. Bất kỳ 
phương thức nào có thuộc tính public đều là một action trong controller. 
Tạo một Controller mới 
Trong folder Controllers  phải chuột chọn Add  New Item  MVC Controller Class ( Figure 13) 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 15 
Figure 13. Tạo controller tên là SanPhamController.cs 
SanPhamController.cs 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Ajax; 
using BanHang.Models; 
namespace BanHang.Controllers 
{ 
 public class SanPhamController : Controller 
 { 
 DataClassesDataContext data = new DataClassesDataContext(); 
 public ActionResult Index() 
 { 
 // Add action logic here 
 ViewData["Title"] = "Sản phẩm"; 
 return RedirectToAction("DanhMucLoaiSanPham"); 
 } 
 public ActionResult DanhMucLoaiSanPham() 
 { 
 // Code cua ban o day 
 ViewData["Title"] = "Danh muc̣ loaị san̉ phâm̉"; 
 List lsp = data.LoaiSanPhams.ToList(); 
 return View("DanhMucLoaiSanPham", lsp); 
 } 
 public ActionResult DanhSachSanPham(string loaisanpham) 
 { 
 ViewData["Title"] = "Danh saćh san̉ phâm̉ trong loaị san̉ phâm̉"; 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 16 
 List sp = data.LaySanPhamTuLoaiSanPham(loaisanpham); 
 return View("DanhSachSanPham", sp); 
 } 
 public ActionResult ChiTietSanPham(int id) 
 { 
 ViewData["Title"] = "Chi tiêt́ san̉ phâm̉"; 
 SanPham ctsp = data.LaySanPhamQuaID(id); 
 return View("ChiTietSanPham", ctsp); 
 } 
 } 
} 
2.5 Tìm hiểu về Views 
Trong controller HomeController.cs, cả hai phương thức Index() và About() đều trả về một view. Một view chứa 
các thẻ HTML và được trả về cho browser. Trong mô hình MVC thì một view tương ứng với một trang .aspx 
trong WebForm. 
View phải được tạo đúng vị trí đường dẫn. Ví dụ với controller HomeController.cs thì hành động 
HomeController.Index() trả về một view nằm ở vị trí đường dẫn \Views\Home\Index.aspx và 
HomeController.About() sẽ trả về một view nằm ở vị trí đường dẫn \Views\Home\About.aspx 
View About.aspx 
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="About.aspx.cs" 
Inherits="HiTest.Views.Home.About" %> 
 About Us 
 TODO: Put about content here. 
View Index.aspx 
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="Index.aspx.cs" 
Inherits="HiTest.Views.Home.Index" %> 
 To learn more about ASP.NET MVC visit <a href="" 
title="ASP.NET MVC Website"> 
Tất cả các thuộc tính nằm giữa 2 thẻ đều có định dạng HTML và có thể tùy ý sửa 
đổi theo ý muốn. 
Tạo view cho controller SanPhamController.cs, trong SanPhamController.cs có 4 phương thức public là Index(), 
DanhMucLoaiSanPham(), DanhSachSanPham() và ChiTietSanPham() nên trong Views phải taọ 4 view tương 
ứng là Index.aspx, DanhMucLoaiSanPham.aspx, DanhSachSanPham.aspx, ChiTietSanPham.aspx bằng cách từ 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 17 
folder Views click phải chuôṭ choṇ Add  New Folder nhâp̣ tên folder mới taọ là SanPham. Từ folder SanPham 
click phải chuôṭ choṇ Add  View… (Figure 14) (ví dụ tạo view DanhMucLoaiSanPham) 
Figure 14. Tạo view DanhMucLoaiSanPham trong folder SanPham 
Index.aspx 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="Index.aspx.cs" 
Inherits="BanHang.Views.SanPham.Index" %> 
 Đây la ̀trang chińh cuả san̉ phâm̉ 
DanhMucLoaiSanPham.aspx 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" 
 CodeBehind="DanhMucLoaiSanPham.aspx.cs" 
Inherits="BanHang.Views.SanPham.DanhMucLoaiSanPham" %> 
<asp:Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" 
runat="server"> 
 Đây la ̀danh muc̣ loaị san̉ phâm̉ 
 <% foreach (var lsp in ViewData.Model) 
 { %> 
 <%= Html.ActionLink(lsp.TenLoaiSanPham, "DanhSachSanPham/" + 
lsp.TenLoaiSanPham, "SanPham") %> 
DanhSachSanPham.aspx 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="DanhSachSanPham.aspx.cs" 
Inherits="BanHang.Views.SanPham.DanhSachSanPham" %> 
<asp:Content ID="viewDanhSachSanPham" ContentPlaceHolderID="MainContent" 
runat="server"> 
 Đây la ̀danh saćh san̉ phâm̉ co ́trong chuyên muc̣ 
ChiTietSanPham.aspx 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 18 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="ChiTietSanPham.aspx.cs" 
Inherits="BanHang.Views.SanPham.ChiTietSanPham" %> 
<asp:Content ID="viewChiTietSanPham" ContentPlaceHolderID="MainContent" 
runat="server"> 
 Đây la ̀Chi tiêt́ san̉ phâm̉ 
2.6 Tìm hiểu về Models 
Một model trong ứng dụng ASP.NET MVC chứa tất cả các nghiệp vụ logic mà không có trong controllers và 
views. Models chứa tất cả các tầng truy xuất dữ liệu logic và tầng nghiệp vụ logic. Ví dụ, nếu sử dụng LINQ to 
SQL để truy nhập dữ liệu thì phải tạo LINQ to SQL class ( file định dạng dbml ) trong folder Models. 
Mô hình dữ liêụ LINQ to SQL ( Figure 15 ) 
Figure 15. Mô hình dữ liêụ LINQ to SQL 
Xây dựng lớp trợ giúp cho việc thao tác với dữ liệu thông qua LINQ to SQL 
DataClasses.cs 
using System; 
using System.Collections.Generic; 
using System.Linq; 
namespace BanHang.Models 
{ 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 19 
 partial class DataClassesDataContext 
 { 
 public List LayCacLoaiSanPham() 
 { 
 return LoaiSanPhams.ToList(); 
 } 
 public List LaySanPhamTuLoaiSanPham(string loaisanpham) 
 { 
 return SanPhams.Where(l => l.LoaiSanPham1.Id == loaisanpham).ToList(); 
 } 
 public SanPham LaySanPhamQuaID(int id) 
 { 
 return SanPhams.Single(s => s.Id == id); 
 } 
 } 
} 
Với lớp trơ ̣giúp có thể thao tác dê ̃dàng hơn với cơ sở dữ liêụ khi cần . Chẳng haṇ với lớp DataClasses.cs ở trên 
khi cần truy nhâp̣ để lấy thông tin về sản phẩm có ma ̃Id , có thể viết như sau trong bất kỳ một code -behind nào 
của Views (ví dụ với view DanhMucLoaiSanPham.aspx.cs trong folder Views): 
Figure 16. Binding data vào trong Views\DanhMucLoaiSanPham.aspx.cs 
Khi đó ta phải sửa đổi laị file Views\DanhMucLoaiSanPham.aspx cho phù hơp̣ với code trên 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" 
 CodeBehind="DanhMucLoaiSanPham.aspx.cs" 
Inherits="BanHang.Views.SanPham.DanhMucLoaiSanPham" %> 
<asp:Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" 
runat="server"> 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 20 
 Đây la ̀danh muc̣ loaị san̉ phâm̉ 
 <asp:PlaceHolder ID="itemPlaceHolder" 
runat="server"> 
 <%= Html.ActionLink(Eval("TenLoaiSanPham"), "DanhSachSanPham/" + 
Eval("TenLoaiSanPham"), "SanPham") %> 
Views chỉ chứa tất cả những gì hiển thị cho người dùng trên browser, Controllers chỉ chứa các logic mà trả về 
view nào cho người dùng hoặc hướng từ action này đến action khác. Còn lại tất cả đều được viết trong Models. 
2.7 Câú trúc Views\Shared\Site.Master 
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" 
Inherits="BanHang.Views.Shared.Site" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
""> 
 My Sample MVC Application 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 21 
 My Sample MVC Application © Copyright 2008 
2.8 Kêt́ quả 
Figure 17. Kết quả chaỵ ứng duṇg khi thêm SanPham vảo ứng duṇg ASP.NET MVC 
3 Câu hỏi ôn tập 
Hỏi: Views của MVC có thể sử dụng AJAX, javascript không? 
Đáp: Được. Về bản chất, view trong ASP.NET MVC Framework cũng là một trang .aspx như với mô hình 
WebForm vì thế có thể thực hiện các tác vụ tương tự. Vì thế việc sử dụng jQuery, ASP.NET AJAX, và javascript 
đều có thể thực hiện được. 
Hỏi: Xây dựng ứng dụng với ASP.NET MVC Framework thì trang web sẽ chạy nhanh hơn so với xây dựng trên 
nền WebForm cũ? 
Đáp: Chưa hẳn là thế. Nếu xây dựng trang web với nền tảng WebForm mà sử dụng ít các controls, usercontrols 
hoặc ít events thì giá trị ViewState và PostBack không lớn nên sự thực thi không hẳn đã chậm. Trang web xây 
dựng theo nền WebForm chỉ thực hiện chậm khi giá trị của ViewState là quá lớn. 
Hỏi: Có phải thực hiện test và debug trên ASP.NET MVC Framework dễ dàng hơn so với nền tảng WebForm. 
Đáp: Đúng. Vì việc thực hiện test và debug trên ASP.NET MVC Framework chỉ phải thực hiện trên Controller 
nên dễ dàng kiểm soát hơn so với thực hiện test và debug trên WebForm. 
Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 22 
4 Tài liệu tham khảo 

File đính kèm:

  • pdfASP.NET 3.5 - Bài 3_Tổng quan về ASP.NET MVC Framework.pdf
Tài liệu liên quan