Bài trước:
Mục tiêu:
- Tìm hiểu thêm một số chức năng của MVC
- Request và Response của MVC Framwork
- Rule của ASP.NET MVC Application
- Cách làm việc Routing của ASP.NET MVC
- Các phương thức cơ bản của Global.asax và RegisterRoutes
- Map Routing: có hay không có tham số...
- Bài này giúp sử dụng cách nào để triệu gọi chứ không phải cách viết code
Chức năng của thành phần Controller
Nếu không cần triệu gọi tên mở rộng của trang web thì hình thức triệu gọi của nó khá thú vị, liên quan tới View, được điều khiển bởi 1 Controller hoặc nhiều Controller. Ứng với tên Controller nào(Action nào) phụ thuộc cấu trúc được khai báo.
Ví dụ: http://localhost:1313/Home/Index
Trên URL này, nó được khai báo trong Map Route hay còn gọi là Global.asax
Event, PostBack và ViewState trong MVC
- Tất cả giao diện người dụng thấy sẽ ở View, điều khiển bởi Controller, không có post back(vì không sử dụng Server Controll nữa), no view state(vì không sử dụng Server Controll nữa), không event trong vòng đời ứng dụng.
Request và Response
- Request thì gửi thông tin về phía server
- Reponse thì nhận thông tin từ phía server
Controller chịu trách nhiệm thực thi và hiện thực Request và Reponse.
Rule MVC Application
Chú ý Controller:
Trong View nếu bạn có thư mục tên là Home, và trong thư mục chứa nhiều View Page có thể là aspx hoặc cshtml thì bạn phải có controller trùng tên với tiền tố như HomeController. Tức tiền tố là View, hậu tố là Controller. Đây là điều bắt buộc của MVC
Cách làm việc Routing của ASP.NET MVC
Tất cả cấu trúc URL đều được khai báo trong Global.ascx, chịu trách nhiệm ánh xạ đường dẫn trên trình duyệt.
Miêu tả MapRoute
- Domain là localhost/ip/tên máy/ tên miền
- Port là số cổng: sẽ không cần số cổng nếu web chạy cổng 80
- Home là thư mục con trong Views
- Home là tên của Controller(HomeController)
- Index là tên phương thức(hành động) trong class HomeController
- Id là tên tham số với giá trị tùy chọn
Ví dụ:
- Truy cập mặc định
+ http://domain[:port]/
+ http://domain[:port]/Home/
+ http://domain[:port]/Home/Index
+ http://domain[:port]/Home/Index/3
- Truy cập controller khác hoặc view
+ http://domain[:port]/Search/ => Mặc định View của Controller Search
+ http://domain[:port]/Search/Basic => Basic View của Controller Search
Truyền giá trị vào phương thức RegisterRoutes
routes.MapRoute(
"Default1","{controller}/{action}/{id}",
new {controller="Home", action="Index",
id= UrlParameter.Optional});
+ http://domain[:port]/Search/Advanced/MVC
+ http://domain[:port]/Search/Basic/MVC
+ http://domain[:port]/Home/Basic/MVC
+ http://domain[:port]/Account/Advanced/MVC
Nhiều tham số MapRoute
routes.MapRoute(
"Default2","{controller}/{action}/{id}/{pro}",
new {controller="Home", action="Index",
id= UrlParameter.Optional,pro=""});
+ http://domain[:port]/Search/Advanced/MVC/Nam
+ http://domain[:port]/Search/Basic/?id=me&pro=x
+ http://domain[:port]/Home/Basic/MVC/Hkg
+ http://domain[:port]/Account/Advanced/MVC/12
Sắp xếp tham số Routing
routes.MapRoute(
"Default1","{controller}/{action}/{id}/{c}",
new {controller="Home", action="View",
id= UrlParameter.Optional,c=UrlParameter.Optional});
routes.MapRoute(
"Default2","{controller}/{action}/{c}/{id}/{n}",
new {controller="Home", action="View",
c=UrlParameter.Optional,id= UrlParameter.Optional, n=UrlParameter.Optional});
Bài tiếp theo sẽ nói về ASP.NET MVC 4 Web Page được thiết kế bởi HtmlHelper Extension