Báo cáo thực tập mô hình MVC trong Asp.net - Pdf 15

Báo cáo thực tập mô hình
MVC trong Asp.net
1
Lời Cảm Ơn!
Như vậy là bốn năm học tại trường đã gần kết thúc.Đến lúc này em nghĩ mình thật
may mắn khi được học tại trường Đại Học Khoa Học Huế,đây là một môi trường tốt để
học tập và rèn luyện,cở sở vật chất đầy đủ,đặc biệt thầy cô trong trường,khoa đều rất
nhiệt tình.
Đặc biệt em xin chần thành cảm ơn các thầy cô trong Khoa Công Nghệ Thông
Tin,trong suốt những năm học tại trường thầy cô đã tận tình chăm lo,dẫn dắt chúng em
trong học tập cũng như trong cuộc sống.
Báo cáo thực tập là kết quả của quá trình học tập bốn năm tại trường,là kết quả của
một tháng làm việc hăng say,em xin cảm ơn sự giúp đỡ nhiệt tình của thầy Nguyễn
Hoàng Hà đã giúp em hoàn thành báo cáo của mình.
Một lần nữa em xin chân thành cảm ơn quý thầy cô,bạn bè đã chỉ bảo,giúp đỡ về học
tập cũng như trong cuộc sống.Em luôn nhớ những điều đó như một kỷ niệm khó quên
trong đời sinh viên của mình.
Đặng Như Hiếu.
Huế,tháng 2 năm 2012.
2
Mục Lục
Danh Mục Các Từ Tiếng Anh………………………………………………………….2
Danh Mục Các Bảng………………………………………………………………… 2
Danh Mục Các Hình……………………………………………………………………2
Mở Đầu…………………………………………………………………………………2
Phần I.Tổng Quan Về Mô Hình MVC Trong .Net
1.1.Lịch sử phát triển………………………………………………………………2
1.2.Đặc điểm của Asp.net MVC…………………………………………………2
1.3.Kiến trúc của Asp.net MVC. …………………………………………………2
1.4.So sánh Asp.net Webform với Asp.net MVC. ………………………………2
Phần II. Các Thành Phần Cơ Bản Trong Asp.net MVC

cách rõ ràng,chặt chẽ. Với cấu trúc 3 lớp việc nâng cấp, sữa đổi hoặc thay thế một chức
năng sẽ dễ dàng hơn.
Với những ưu điểm trên Asp.net MVC chắc chắn sẽ là nền tảng để xây dựng và phát
triển web lý tưởng. Tuy nhiên vì đây là công nghệ mới, nên tại Việt Nam hầu như chưa
được áp dụng và nếu có thì cũng không nhiều, và hầu hết các bạn sinh viên đều chưa biết
đến nó. Chính vì thế mà em đã mạnh dạn chọn đề tài nghiên cứu về MVC để làm báo cáo
thực tập của mình.
 Mục đích nghiên cứu:
Nghiên cứu MVC với những mục đích:
− Học hỏi kiến thức mới.
− Quá trình tìm hiểu giúp em nâng cao khả năng tự học của mình.
− Phục vụ việc xây dựng một ứng dụng MVC trong thực tế.
 Đối tượng và phạm vi nghiên cứu:
− Asp.net MVC 2.0
− Xây dựng ứng dụng bán hàng trực tuyến.
 Phương pháp nghiên cứu:
− Nghiên cứu lý thuyết thông qua ebook
− Thông qua các ví dụ, video trên mạng.
− Tổng hợp kiến thức để xây dựng ứng dụng thực tế.
 Ý nghĩa khoa học và thực tiễn:
− Hiện nay Asp.net MVC là công nghệ mới tại Việt Nam và các bạn sinh viên vẫn
chưa biết đến nhiều, chính vì thế hoàn thành báo các thực tập này sẽ là một tài liệu
nhỏ giúp các bạn sinh viên ban đầu muốn tìm hiều về công nghệ mới này.
7
− Asp.net MVC có nhiều ưu điểm vượt trội, nó sẽ là tương lai thay thế cho Asp.net
WebForm, cho nên việc tìm hiểu về nó sẽ có tình tích cực và thực tiển cao, có thể
áp dụng cho bây giờ hoặc tương lai.
Phần I
Tổng Quan Về Mô Hình MVC Trong .Net
1.1.Lịch Sử Phát Triển:

SQL và template
cho các kết quả có
định dạng
1996 Active Server Pages
(ASP)
Mục đích chung Thông dịch thời
gian thực
Xu hướng “spaghetti
code”
2002/03 ASP.NET 1.0/1.1 Đã được biên dịch
Giao diện có trạng
thái
Cấu trúc lớn
Xu hướng lập trình
hướng đối tượng
Nặng nề trên băng
thông
HTML khó nhìn
Không thể test
2005 ASP.NET 2.0
8
2007 ASP.NET Ajax
2008 ASP.NET 3.5
2009 Asp.net MVC 1.0
2010 Asp.net MVC 2.0
ASP.NET 4.0
2011 Asp.net MVC 3.0
1.2.Đặc Điểm Của Asp.net MVC:
− Tách rõ ràng các mối liên quan, mở khả năng test TDD(test driven developer). Có
thể test unit trong ứng dụng mà không cần chạy Controller cùng với tiến trình

với Models, và cuối cùng là chọn một Views thích hợp để hiển thị, trong kiến trúc
MVC View chỉ có trách nhiệm hiển thị giao diện mà thôi, còn điều khiển dòng
nhập xuất vẫn là do Controller.
Một lợi điểm của MVC là nó bắt buộc phải tạo ra sự rành mạch trong liên kết giữa 3
thành phần models,views,controllers trong ứng dụng. Duy trì được mối quan hệ rành
mạch khiến việc kiểm tra ứng dụng dễ dàng hơn, đồng thời trách nhiệm của các thành
phần được định nghĩa rõ ràng và đều ăn khớp với nhau.
1.4. So S ánh Asp.net Webform V ới Asp.net MVC :
− Asp.net Webfrom sử dụng Viewstate để quản lý các trang web đều có
lifecycle,postback, dùng các web controls, các evens để thực hiện các hành động
cho UI khi có sự tương tác với người dùng nên hầu hết Asp.net xử lý chậm.
− Asp.net MVC Framework chia làm 3 phần: Models, Views, Controllers. Mọi
tương tác với Views sẽ thực hiện hành động trong Controller, không còn
postback,lifecycle và các events.
− Việc kiểm tra test lỗi,debug với Asp.net đều phải chạy tất cả các tiến trình của
Asp.net và mọi sự thay đổi ID của control nào cũng ảnh hưởng đến ứng dụng.Đối
với Asp.net MVC Framework thì việc có thể sử dụng unit test để thẩm định các
Controlers thực hiện như thế nào.
Tính năng Asp.net Webform Asp.net MVC
Kiến trúc Webform-Business-
Database
Models-Views-Controllers
Cú pháp chương trình Tất cả các sự kiện và
control do server quản lý
Các sự kiện do Controlers
quản lý
Truy cập dữ liệu Sữ dụng hầu hết các công
nghệ truy cập dữ liệu trong
ứng dụng
Sử dụng LinQ to Sql class

Bất cứ một request nào đến sever sẽ được xử lý ở Controller,Controller sẽ tiếp nhận
request đó và xữ lý, bên trong Controller sẽ có nhiều Actions, mỗi Action tương ứng xữ
lý một request. Ví dụ chúng ta có ProductController bên trong đó ViewAction để tiếp
nhận request để xem xét thông tin của 1 product, trongânkhi UpdateAction tiếp nhận
request cập nhật sản phẩm khi người dùng kích nút thay đổi thông tin sản phẩm.
Tầng Models đại diện cho những entity với bên trong hệ thống của, đối với một số hệ
thống thì Business Logic có thể nằm trong tầng Models hoặc nằm trong Controller tùy
theo thiết kế.
Sau khi Controller làm việc với tầng Models để lấy thông tin cần cho người dùng thì
Controller sẽ gửi cho Views một DataModel và Views sẽ render cái DataModel đó ra hiển
thị cho người dùng.
11
Asp.net MVC không phải là một sự thay thế cho Asp.net WebForm mà chỉ là một sự
chọn lựa mới cho những người phát triển web, Asp.net MVC cũng có những khái niệm
nhưng Asp.net WebForm như Configuration,Security,Roles…
Cấu trúc chính 1 ứng dụng trong dự án Asp.net MVC:
12
− Content:thư mục chứ file css,file ảnh.
− Controllers:chứ các Controller của ứng dụng, một Controller bắt buộc theo sau nó
có “Controller”.
− Models:chứa các lớp Business Logic.
− Views:chứ những trang aspx,tương ứng với một Controller thì sẽ có một Views
tương ứng.
2.2.Url Và Routing:
Hầu hết các Web Framework như Asp, Jsp, Php… đều ánh xạ url vào 1 file lưu trên
đĩa.MVC Framwork làm việc theo cách khác, thay vì ánh xạ các file trên đĩa nó sẽ đi trực
tiếp vào class những lớp này là các Controllers.
Url Thực hiện
E:webroot\default.aspx
/>x

trên url thì sẽ
không có giá trị
nào cho các
Parameters
RouterVaulueDictionary new
RouterVaulueDictionary
(new{
controller= "Products",
action = "List",
category = "Fish",
pageIndex = 3 })
Constraints Thiết đặt điều kiện
cho các
Parameters
RouterVaulueDictionary new
RouteValueDictionary
(new {
pageIndex = @"\d{0,6}"
})
DataTokens Thiết đặ tùy chọn
cho các route nhập
vào và sẽ được bộ
định tuyến xữ lý
RouterVaulueDictionary
Thành phần chính:RouteBase, Route và RouteCollection:
Hệ thống định tuyến sẽ chạy khi có request
Cấu hình định tuyến được xây dựng dựa trên 3 thành phần chính:
− RouteBase:Là lớp cở sở trừu trường của một route,nếu không thích cách mà
những đối tượng route tìm ra những url khớp với nó hoặc muốn làm cho những url
có dạng khác bạn có thể viết lại lớp và kế thừa từ RouteBase lúc đó ta phải overide

MvcRouteHandler.
+ Values: Từ điển chứa tên và giá trị được lấy từ request cộng thêm giá trị
mặc định của tham số trong url.
+ DataTokens: là từ điển chứa cấu hình bổ sung được cung cấp bởi route đưa
vào.
3. Nó gọi RouteHandler của RouteData, nó cung cấp cho RouteHandler thông tin
về yêu cầu hiện tại thông qua một tham số gọi là requestContext.Điều này bao
gồm thông tin của RouteData và một đối tượng HttpContextBase đặc tả tất cả
thông tin liên quan bao gồm Http header, cookies, authentication, query
string,dữ liệu của form post.
RouteValueDictionary:
Thuộc tính mặc định của Route là một RouteValueDictionary, đó là một API linh hoạt
vì vậy bạn có thể làm nhiều cách khác nhau mà bạn muốn. RouteValueDictionary sẽ tự
trích ra danh sách những thuộc tính (controller,action) vì vậy bạn cần cung cấp danh sách
tên và giá trị những thuộc tính này.
Có một cách phổ biến để tạo RouteValueDictionary đó là cung cấp một IDictionary
<string,object> như là một tham số khởi tạo hoặc cách khác là dùng collection initializer.
Ví dụ:
15
Tạo Một Tuyến Với MapRoute():
Asp.Net MVC đã mở rộng phương thức cho RouteCollection gọi là MapRoute. Nó
cung câp một cách khác để thêm một tuyến, thay vì gọi route.Add(new Route(…)).
Ví dụ:
Trong ví dụ trên PublicProductsList là tên của tuyến,đó là chuổi duy nhất và có thể đặt
tùy ý, tên của tuyến có thể để null.
Dùng Parameter:
Route này sẽ nối với những Url như là: /Catalog/yellow hoặc /Catalog/1234, và hệ
thống định tuyến sẽ thêm tên/giá trị tương ứng cho đối tượng request của RouteData.
Trong request /Catalog/yellow RouteData.Values[“color”] cho giá trị yellow.
Nhận Giá trị Parameter từ Action Methods:

được yêu cầu từ trình duyệt thiết bị khác.
Trong trường hợp này chúng ta sẽ dùng đến thuộc tính Contraints của Route. Đó là
cách thiết đặt quy tắt cho các patameter.
Kết Hợp Regular Expressions:
Để chắc chắn parameter là một số, chúng ta có thể dùng như sau:
Xác nhận id là số có chiều dài 6 kí tự. Ví dụ các url hợp lệ: Articles/1,
Articles/123456….
Kết Hợp Với Phương Thức HTTP:
Nếu muốn route chỉ nối với phương thức POST hoặc GET, chúng ta có thể lớp
HttpMethodConstraint nó kế thừa từ IRouteConstraint:
17
Tạo URL đi ra:
Việc xữ lý url đến mới là một nữa. Ứng dụng phải cung cấp đường link để người dùng
di chuyển đến những nơi khác.
Đối với Asp.Net Web Form hầu hết các ứng dụng khác khi xây dựng link ta phải xây
dựng chuổi với code một cách cứng, ví dụ khi gọi trang Details.aspx với tham số id url sẽ
như sau: mylink.NavigateUrl=”~/Details.aspx”+ ItemID;
Trong MVC sẽ viết như sau:
<a href=”Produc/Details/<%:ViewData[“ItemID”]%>” >Chi Tiết</a>
Tạo Ra Hyperlinks với Html.ActionLink():
Nó sẽ render ra url dạng với action là List trong lớp ProductsController:
Các Tham Số Bổ Sung:
Nó sẽ render ra url dạng:
Hoặc nếu route của bạn đã cấu hình dạng: /Products/List/{color}/{page} thì code sẽ
render ra url dạng:
Ta có thể thêm thuộc tính của thẻ Html như sau:
18
Đoạn mã trên sẽ tạo ra Html như sau:
Tạo url không có link:
Đoạn mã trên sẽ có kết quả như sau:

Request.Cookies HttpCookieCollection Những cookie do browse
gửi cùng request
Request.HttpMethod String Phương thức http dùng cho
request(POST hoặc GET)
Request.Headers NameValueCollection Những http header gửi cùng
request
Request.Url Uri Url được yêu cầu
Request.UserHostAddress String Địa chỉ của người yêu cầu
request
RouteData.Route RouteBase Route được chọn cho
request
RouteData.Values RouteValueDictionary Tham số của route được
trích ra từ url hoặc giá trị
mặc định.
HttpContext.Application HttpApplicationStateBase Lưu trữ trạng thái ứng dụng
HttpContext.Cache Cache Lưu trữ cache của ứng dụng
HttpContext.Items IDictionary Lưu trữ trạng thái của
request hiện tại
HttpContext.Session HttpSessionStateBase Lưu trữ trạng thái của phiên
làm việc
User IPrincipal Thông tin xác thực về người
đang nhập hệ thống
TempData TempDataDictionary Dữ liệu tạm thời của người
dùng hiện tại
Ví dụ:
20
Sử dụng tham số cho các Action Method:
Chúng ta có thể dùng đối tượng context để lấy dữ liệu đầu vào bằng cách:
Nhưng chúng ta có thể viết lại bằng cách truyền tham số ngắn gọn như sau:
Dùng Model Binding trong Action Method Của Controller:

"SomeController");
return
RedirectToRoute("MyNamedRoute");
RedirectResult Chuyển đến url tùy

return
Redirect("");
22
ContentResult Trả lại dữ liệu văn
bản dạng thô cho
trình duyệt
return Content(rssString,
"application/rss+xml");
FileResult Trả về dữ liệu dạng
nhị phân cho trình
duyệt
return File(@"c:\report.pdf",
"application/pdf");
JsonResult Gửi lại một đối
tượng dạng JSON
return Json(someObject);
JavaScriptResult Trả lại đoạn mã
javascript thực thi
trên trình duyệt
return
JavaScript("$('#myelem').hide();");
HttpUnauthorizedResult Xác thực người
dùng đăng nhập
vào hệ thống
return new HttpUnauthorizedResult();

sau:
+ Dữ liệu của nó là chuổi.
+ Kiểu của nội dung gửi về: text/xml cho XML, text/csv cho
CSV,application/rss+xml cho RSS. Có thể tìm thấy những giá trị này trong lớp
System.Net.Mime.MediaTypeNames.
+ Dạng dữ liệu mã hóa được đặc tả như là một đối tượng System.Text.Encoding,
chuổi sẽ được chuyển sang dãy các byte để gửi đi.
Nếu trả về dạng văn bản, và không quan tâm đến kiểu của nội dung, chúng ta có thể
làm tắt như sau, FrameWork sẽ tự chuyển nó sang ContentResult:
Tạo RSS Feed:
Ví dụ cách dùng ContentResult. Để tạo RSS 2.0 chúng ta dùng hàm tạo tài liệu
XML .NET 3.5 XDocument API và sau đó gửi đến cho trình duyệt:
25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status