1. Trang chủ
  2. » Tất cả

15.Chuong 15

61 3 0

Đ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 61
Dung lượng 1,19 MB

Nội dung

CHAPTER 15 URL Routing Trước giới thiệu MVC Framework, ASP.NET giả định có mối quan hệ trực tiếp URL yêu cầu tập tin đĩa cứng máy chủ Công việc máy chủ nhận yêu cầu từ trình duyệt cung cấp đầu từ tập tin tương ứng Cách tiếp cận làm tốt Web Form, trang ASPX tập tin phản hồi khép kín đến u cầu Nó khơng có ý nghĩa ứng dụng MVC, nơi yêu cầu xử lý phương thức action lớp controller tương quan one-to-one với tập tin đĩa Để xử lý URL MVC, tảng ASP.NET sử dụng hệ thống định tuyến Trong chương này, cho bạn cách sử dụng hệ thống định tuyến để tạo mạnh mẽ linh hoạt xử lý URL cho dự án bạn Như bạn thấy, hệ thống định tuyến cho phép bạn tạo mơ hình URL mà bạn mong muốn diễn đạt chúng cách rõ ràng súc tích Các hệ thống định tuyến có hai chức năng:  Kiểm tra URL gọi đến tìm controller action yêu cầu định  Tạo URL gửi Đây URL xuất HTML biểu diễn từ View để action cụ thể gọi người dùng nhấp chuột vào liên kết (tại thời điểm đó, trở thành URL đến lần nữa) Trong chương này, tập trung vào việc xác định định tuyến sử dụng chúng để xử lý URL đến để người dùng tiếp cận với điều khiển hành động bạn Có hai cách để tạo định tuyến ứng dụng MVC Framework: ước dựa định tuyến thuộc tính định tuyến Bạn làm quen với quy ước dựa định tuyến bạn sử dụng phiên trước MVC Framework, thuộc tính định tuyến để MVC Tơi giải thích hai phương pháp chương Sau đó, chương tiếp theo, tơi cho bạn thấy làm để sử dụng định tuyến tương tự để tạo URL bạn cần đưa vào quan điểm bạn, cho bạn thấy làm để tùy chỉnh hệ thống định tuyến sử dụng tính liên quan gọi khu vực Bảng 15-1 cung cấp tóm tắt cho chương Chuẩn bị ví dụ Để chứng minh hệ thống định tuyến, cần dự án mà tơi thêm định tuyến Tôi tạo ứng dụng MVC cách sử dụng the Empty template, gọi dự án UrlsAndRoutes Tôi thêm dự án thử nghiệm đển the Visual Studio solution gọi UrlsAndRoutes Thử nghiệm cách kiểm tra tùy chọn the Add Unit Tests, thể hình 15-1 Hình 15-1 Tạo dự án ứng dụng MVC Empty với kỹ thuật kiểm nghiệm Tôi cho bạn làm để tạo kỹ thuật kiểm nghiệm tay cho chương SportsStore, điều tạo kết xử lý tham chiếu dự án tự động tương tự Bạn cần thêm Moq, đó, nhập vào lệnh sau giao diện điều khiển NuGet: Install-Package Moq -version 4.1.1309.1617 -projectname UrlsAndRoutes.Tests Tạo Controllers Ví dụ: Để chứng minh tính định tuyến, tơi thêm số controller đơn giản vào ứng dụng ví dụ Tôi quan tâm đến cách thức mà URL diễn giải để gọi phương thức action, đó, mơ hình view tơi sử dụng giá trị chuỗi view bag có gọi controller tên phương thức action Đầu tiên, tạo Home controller thiết lập nội dung để phù hợp với thứ Liệt kê 15-1 Bảng liệt kê 15-1 Nội dung tập tin HomeController.cs using System.Web.Mvc; namespace UrlsAndRoutes.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Controller = "Home"; ViewBag.Action = "Index"; return View("ActionName"); } } } Tạo Customer controllervà thiết lập nội dung để phù hợp với Liệt kê 15-2 Bảng liệt kê 15-2 Nội dung tập tin CustomerController.cs using System.Web.Mvc; namespace UrlsAndRoutes.Controllers { class CustomerController : Controller { public public ActionResult Index() { ViewBag.Controller = "Customer"; ViewBag.Action = "Index"; return View("ActionName"); } public ActionResult List() { ViewBag.Controller = "Customer"; ViewBag.Action = "List"; return View("ActionName"); } } } Tạo Admin controller chỉnh sửa nội dung để phù hợp với mã hiển thị Liệt kê 15-3 Bảng liệt kê 15-3 Nội dung tập tin AdminController.cs using System.Web.Mvc; namespace UrlsAndRoutes.Controllers { public class AdminController : Controller { public ActionResult Index() { ViewBag.Controller = "Admin"; ViewBag.Action = "Index"; return View("ActionName"); } } } Tạo View Tôi rõ view ActionName tất phương thức action controllers, cho phép tơi để xác định view sử dụng suốt ứng dụng ví dụ Tạo thư mục có tên Shared thư mục Views thêm view gọi ActionName.cshtml vào nó, thiết lập nội dung quan điểm để phù hợp với Liệt kê 15-4 Bảng liệt kê 15-4 Nội dung File ActionName.cshtml @{ Layout = null; } ActionName The controller is: @ViewBag.Controller The action is: @ViewBag.Action Thiết lập URL bắt đầu kiểm thử ứng dụng Như tơi giải thích phần sách này, Visual Studio cố gắng tìm URL mà bạn muốn trình duyệt yêu cầu dựa tập tin bạn chỉnh sửa bạn bắt đầu debugger Đây ý tưởng tốt mà nhanh chóng trở nên khó chịu tính mà tơi ln ln vơ hiệu hóa Chọn UrlsAndRoutes Properties từ menu Project Studio Visual, chuyển sang tab Web kiểm tra tùy chọn Specific Page phần Start Action Bạn không cần phải cung cấp giá trị kiểm tra tùy chọn đủ Nếu bạn bắt đầu ứng dụng ví dụ, bạn thấy câu trả lời thể hình 15-2 Hình 15-2 Chạy ứng dụng ví dụ Giới thiệu Mẫu URL Các hệ thống định tuyến làm kỳ diệu cách sử dụng tập hợp định tuyến Những định tuyến bao gồm lược đồ URL lược đồ cho ứng dụng, tập hợp URL mà ứng dụng bạn nhận đáp ứng Tôi không cần phải tự loại tất URL riêng biệt sẵn sàng để hỗ trợ ứng dụng Thay vào đó, định tuyến có chứa mẫu URL, so sánh với URL đến Nếu URL phù hợp với mơ hình, sau sử dụng hệ thống định tuyến để xử lý URL Hãy bắt đầu với URL cho ứng dụng ví dụ: http://mysite.com/Admin/Index URL chia thành phân đoạn Đây phận URL, không bao gồm hostname chuỗi truy vấn, phân cách ký tự / Trong URL ví dụ, có hai phân đoạn, thể hình 15-3 Hình 15-3 Những đoạn URL ví dụ Phân đoạn chứa từ Admin, phân đoạn thứ hai chứa từ Index Tinh mắt hơn, rõ ràng phân đoạn liên quan đến controller phân đoạn thứ hai liên quan đến action Nhưng, tất nhiên, cần phải thể mối quan hệ cách mà hệ thống định tuyến hiểu Dưới mẫu URL mà thực điều này: {controller}/{action} Khi xử lý yêu cầu gửi đến, công việc hệ thống định tuyến kết hợp URL yêu cầu đến mơ hình giải nén giá trị từ URL cho biến mảng xác định mơ hình Các biến mảng biểu diễn cách sử dụng dấu ngoặc (các ký tự { } ) Các mẫu ví dụ có hai biến mảng với tên controller action, giá trị biến mảng controller Admin giá trị biến mảng action Index Tơi nói phù hợp với mơ hình, ứng dụng MVC thường có số định tuyến hệ thống định tuyến so sánh URL gọi đến đến mẫu URL định tuyến tìm thấy phù hợp Lưu ý Các hệ thống định tuyến khơng có kiến thức đặc biệt controller action Nó trích giá trị cho biến mảng Đó sau trình giải yêu cầu, yêu cầu đến MVC Framework thích hợp, có nghĩa gán cho biến số controller action Đây lý hệ thống định tuyến sử dụng với Web Forms API Web (Tôi giới thiệu API Web Chương 27 tơi mơ tả u cầu q trình xử lý ASP.NET chi tiết sách Pro ASP.NET MVC Platform tôi.) Theo mặc định, mẫu URL phù hợp với URL mà có số lượng xác phân đoạn Ví dụ, mơ hình {controller} / {action} phù hợp với URL mà có hai phân đoạn, minh họa Bảng 15-2 Bảng 15-2 URL Phù hợp Request URL http://mysite.com/Admin/Index Segment Variables controller = Adminaction = Index http://mysite.com/Index/Admin controller = Indexaction = Admin http://mysite.com/Apples/Oranges controller = Applesaction = Oranges http://mysite.com/Admin No match—too few segments http://mysite.com/Admin/Index/Soccer No match—too many segments Bảng 15-2 nhấn mạnh hai hành vi quan trọng mẫu URL:  Mơ hình URL bảo thủ, phù hợp với URL có số phân đoạn mơ hình Bạn thấy điều ví dụ thứ tư thứ năm bảng  Mơ hình URL tự Nếu URL khơng có số xác phân đoạn, mơ hình trích xuất giá trị cho biến mảng, điều Đây hành vi mặc định, chìa khóa để hiểu Mơ hình URL chức Tôi cho bạn làm để thay đổi mặc định sau chương Như đề cập, hệ thống định tuyến điều ứng dụng MVC, Mơ hình URL phù hợp khơng có controllerhoặc action tương ứng với giá trị chiết xuất từ URL Bạn thấy điều chứng minh ví dụ thứ hai Bảng 15-2 Tơi hốn Admin phân đoạn Index URL, đó, giá trị chiết xuất từ URL hốn đổi, khơng có controller Index dự án ví dụ Tạo Đăng ký Định tuyến đơn giản Một bạn có mẫu URL tâm trí, bạn sử dụng để xác định định tuyến Định tuyến định nghĩa file RouteConfig.cs, thư mục dự án App_Start Bạn xem nội dung ban đầu mà Visual Studio xác định cho tập tin Liệt kê 15-5 Bảng liệt kê 15-5 Nội dung mặc định tập tin RouteConfig.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace UrlsAndRoutes { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", UrlParameter.Optional } ); } } } id = Phương thức RegisterRoutes tĩnh định nghĩa file RouteConfig.cs gọi từ tập tin Global.asax.cs, thiết lập số tính cốt lõi MVC ứng dụng bắt đầu chạy Bạn xem nội dung mặc định tập tin Global.asax.cs Liệt kê 15-6, làm bật lời gọi đến phương thức RouteConfig.RegisterRoutes, làm từ phương thức Application_Start Bảng liệt kê 15-6 Nội dung mặc định File Global.asax.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace UrlsAndRoutes { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); } } } Phương pháp Application_Start gọi tảng ASP.NET ứng dụng MVC lần bắt đầu chạy, dẫn đến phương pháp RouteConfig.RegisterRoutes gọi Các tham số để phương pháp giá trị thuộc tính RouteTable.Routes tĩnh, mà thực thể lớp RouteCollection, mà mô tả Bảng liệt kê 15-7 cho thấy làm để tạo định tuyến sử dụng mẫu ví dụ URL từ phần trước phương thức RegisterRoutes tập tin RouteConfig.cs (Tôi gỡ bỏ báo cáo khác phương thức để tơi tập trung vào ví dụ.) Bảng liệt kê 15-7 Đăng ký Route RouteConfig.cs file using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace UrlsAndRoutes { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { = new Route("{controller}/{action}", new MvcRouteHandler()); routes.Add("MyRoute", myRoute); } Route myRoute } } Tôi tạo tuyến sử dụng mẫu URL hàm tạo tham số, mà tơi trình bày chuỗi Tơi truyền thực thể MvcRouteHandler đến hàm tạo Công nghệ ASP.NET khác cung cấp lớp khác để điều chỉnh hành vi định tuyến, lớp sử dụng cho ứng dụng ASP.NET MVC Một tạo định tuyến, thêm vào đối tượng RouteCollection sử dụng phương thức Add, truyền vào tên muốn route biết đến định tuyến Mẹo: đặt tên định tuyến bạn không bắt buộc có tranh luận triết học mà làm hi sinh số phân chia ngắn gọn mối lo ngại mà không xuất phát từ định tuyến Tôi thoải mái việc đặt tên, tơi giải thích điều vấn đề "Tạo URL từ cụ Route" Chương 16 Một cách thuận tiện việc đăng ký định tuyến sử dụng phương thức MapRoute xác định lớp RouteCollection Liệt kê 15-8 cho thấy làm tơi sử dụng phương pháp để đăng ký định tuyến, có tác dụng tương tự ví dụ trước, có cú pháp ngắn gọn ... mơ hình, bạn thấy kết giống thể hình 15 -4, minh họa ảnh hưởng điều hướng đến / Admin / Index Hình 15- 4 Điều hướng đường đơn giản Route đơn giản tơi Liệt kê 15- 8 khơng nói MVC Framework đến cách... dụng điều hướng đến / XHome / Index, kết minh họa hình 15- 6 Hình 15- 6 Trộn thành phần tĩnh biến phân khúc ĐỊNH TUYẾN ĐẶT HÀNG Trong Liệt kê 15- 12, xác định định tuyến đặt trước tất định tuyến khác... View("ActionName"); } } } Tạo Customer controllervà thiết lập nội dung để phù hợp với Liệt kê 15- 2 Bảng liệt kê 15- 2 Nội dung tập tin CustomerController.cs using System.Web.Mvc; namespace UrlsAndRoutes.Controllers

Ngày đăng: 23/10/2019, 21:15

w