2016-01-11 21 views
6

OK, tôi biết cách dễ nhất để sử dụng thuộc tính Routing trong MVC 6 là:MVC 6 Thuộc tính định tuyến bằng cách sử dụng mới "[điều khiển]/[hành động]" Tokens và khu vực

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
     app.UseMvc(); 
    } 
} 

Và đây là bộ điều khiển mã sử dụng Token mới (không có khu vực):

[Route("[controller]/[action]")] 
public class HomeController : Controller 
{ 
} 

Và đây là các mã điều khiển bằng cách sử dụng Token mới (với khu vực):

[Area("MyArea")] 
[Route("[controller]/[action]")] 
public class HomeController : Controller 
{ 
} 

Câu hỏi:

  1. Đây có phải là cách MS muốn bạn mã hóa bộ điều khiển của mình bằng cách sử dụng các vùng và thẻ không?
  2. Hoặc có cách nào sạch hơn không?
  3. Có thể bằng cách nào đó họ đã tạo Mã thông báo [khu vực] không?

Cuối cùng, tôi biết tôi có thể chơi trò chơi này, nhưng không phải là cách tiếp cận dựa trên quy ước đầu tiên - app.UseMvc() - đơn giản nhất?

public void Configure(IApplicationBuilder app) 
{ 
    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "areaRoute", 
      template: "{area:exists}/{controller=Home}/{action=Index}/{id?}" 
     ); 
    }); 
} 

Trả lời

0

Microsoft cung cấp cho bạn hai tùy chọn, mỗi tùy chọn đều có ưu và nhược điểm riêng. Bạn nên quyết định cái nào tốt hơn dựa trên ngữ cảnh/nhu cầu của bạn.

ước dựa tuyến

Ưu điểm:

  • Nó là đơn giản hơn, thay vì xác định tất cả mọi thứ ở mức độ mỗi hành động bạn chỉ cần quyết định một lần và cho tất cả các cách url của bạn sẽ trông như thế nào.
  • Hoàn hảo khi url của bạn đối sánh chính xác với tên bộ điều khiển/hành động.
  • Nếu bạn muốn thay đổi và url bạn cần thay đổi tên của lớp/phương pháp.
  • Hoàn hảo cho các dự án có cấu trúc url sạch và có thể dự đoán được.
  • Hoàn hảo để tạo mẫu nhanh một dự án mới.
  • Hơi dễ dàng hơn cho các nhà phát triển -> bằng cách biết một địa chỉ bạn đã biết, trong đó điều khiển/hành động nằm chức năng

Nhược điểm:

  • Bạn lỏng chút kiểm soát

Định tuyến dựa trên thuộc tính

Ưu điểm:

  • Cấp cho bạn toàn quyền kiểm soát cách url trông như thế nào, ví dụ cho mục đích SEO.
  • Nếu bạn muốn thay đổi url, bạn không cần phải thay đổi tên của lớp/phương pháp.
  • Hoàn hảo khi url của bạn không khớp với tên bộ điều khiển và hành động hoặc bạn muốn tạo thủ công chúng (i.e khách hàng muốn điều đó).
  • Hoàn hảo để duy trì khả năng tương thích ngược, khi bạn có dự án cũ và muốn có cấu trúc url tương thích.

Nhược điểm:

  • Yêu cầu làm việc nhiều hơn một chút, vì bạn cần phải xác định các tuyến đường trong mã của bạn. Xin lưu ý rằng việc thêm thuộc tính vào lớp/phương thức chỉ là vài giây.

Làm thế nào để quyết định cái nào để sử dụng:

  • Nếu bạn đã/mong đợi để có rất ít routes.MapRoute() cuộc gọi -> sử dụng ước định tuyến như nó đơn giản hơn

  • Nếu bạn có/mong đợi để có nhiều cuộc gọi routes.MapRoute() -> sử dụng định tuyến thuộc tính

Các vấn đề liên quan