1 [MVC5 Series - P2] Controllers Sun Jul 05, 2015 9:20 pm
Admin
Admin
[MVC5 Series - P2] Controllers
Part 1 [MVC5 Series - P1] Giới thiệu về ASP.NET MVC 5
Tạo 1 Controller
Controller là thành phần chứa các Action.Controller có dạng XXXController, ví dụ như
- Code:
DefaultController
- Code:
Default
Khám phá Action
Action là các phương thức điều khiển và đáp ứng yêu cầu của người dùng.Action Index return View (giao diện), do đó ta thêm View cho Action này.
Thêm View cho Action
Khi thêm View cho Action, một thư mục có tên của Controller sẽ tự động thêm vào (nếu chưa có), và lấy tên của Action làm tên của View đó.
Vậy là ta đã có thành phần xử lý (Controller) và thành phần hiển thị (View). Bây giờ thử chỉnh sửa View và xem kết quả.
Nếu bây giờ bạn có chút thắc mắc thì cũng tốt thôi. Tại sao những thẻ HTML lại không nằm trong 1 trang HTML? Cú pháp @{ ... } là gì? Và điều quan trọng là những thứ như navbar, footer ở đâu ra?
Bạn chỉ cần biết một số điều sau, những thứ còn lại bạn sẽ được hiểu sau này:
- Hãy xem phần mở rộng của file View, nó có đuôi là .cshtml, tức là trộn chung giữa mã C# và HTML. Đây là cấu trúc Razor mà bạn sẽ áp dụng để viết giao diện cho View. Tuy bạn có thể tạo project MVC sử dụng Web form nhưng "người ta" (tham khảo) khuyên là nên sử dụng cấu trúc Razor trong MVC để tối ưu hóa xử lý.
- Dĩ nhiên, @{ ... } là 1 dạng mã Razor mà các bạn sẽ được biết sau này.
- Đây là lúc cần liên tưởng tới Web form, có thể xem navbar, footer như 1 trang Master Page, View chỉ là 1 trang con được nhúng trong Master Page.
Action Result
Quay lại với Action Index trong TestController, ta thấy kết quả trả về của Action là 1 ActionResult, với kiểu này bạn có thể trả về nhiều kết quả khác nhau tùy thuộc vào mục đích sử dụng của bạn.- View() trả về View được bọc trong layout (Master Page)
- PartialView() giống như View, nhưng sẽ không được bọc trong layout, ví dụ nếu như trong Action Index return PartialView(), ta sẽ không nhìn thấy footer hoặc navbar nữa, chỉ có View Index thôi.
- Content() trả về text.
- Json() trả về dữ liệu Json.
- Javascript() trả về nội dung javascript
- File() trả về nội dung file không bao gồm layout.
- RedirectToAction() chuyển sang 1 Action khác.
- Redirect() chuyển sang một url khác.
Vậy hãy thử một kiểu trả về khác trong Action
Vấn đề ở đây là làm sao để chạy Action Hello khi mà nó không có giao diện (nó trả về chỉ là text). Vì Content() thường được dùng để test dữ liệu, cho nên cách chạy ở đây sẽ là...nhập url cho nó. Bạn hãy chạy Action Index, sau đó chuyển url sang Action Hello bằng cách sau.
Định tuyến
Định tuyến (routing) là việc cấu hình đưa ra định dạng mẫu của url, url gọi các Action nằm trong Controller.Như trên, url có dạng {controller}/{action}/{id}, và ý nghĩa sẽ là (ví dụ với Test/Hello):
- Nếu không có {id} sẽ là
- Code:
http://localhost:30383/Test/Hello
- Nếu không có {action} sẽ là
- Code:
http://localhost:30383/Test
- Nếu không có {controller} sẽ là
- Code:
http://localhost:30383
- Code:
http://localhost:30383
- Code:
http://localhost:30383/Home
- Code:
http://localhost:30383/Home/Index
Ví dụ chạy Action About của controller Home
Kết
Bài này mình xin dừng lại ở đây. Bài tiếp theo sẽ là cách tiếp nhận tham số trong Action.Part 3 Action IO
http://phantienquang.blogspot.com/2014/09/mvc5-series-p2-controllers.html