Đa năng hóa đặt tên bộ điều khiển ASP.NET MVC


86

Quy ước RESTful chỉ ra việc sử dụng danh từ số nhiều thay vì các đối tượng số ít.

Quy ước đa nguyên hóa để đặt tên bộ điều khiển ASP.NET MVC, tức là
ProductControllerhoặc ProductsController?


4
Tôi không nghĩ rằng chúng được cho là đa tập trung dựa trên những cái mặc định đi kèm với các hướng dẫn MVC trên ASP.net.
user1477388

1
Ví dụ: API Web ASP.NET mặc định có sự kết hợp của cả tên số ít (HomeController, AccountController) và số nhiều (ValuesController).
Sergio Vicente

Câu trả lời:


45

Một số Khung công tác MVC sử dụng số nhiều, tuy nhiên, các mẫu dự án MVC chứa một bộ điều khiển được gọi là AccountController, do đó đề xuất đặt tên số ít.

Nó không quan trọng. Như với hầu hết mọi thứ trong khung Asp.net MVC, sự lựa chọn là của bạn. Không có quy ước thực sự.

Đó là ý kiến ​​cá nhân của tôi nhưng điều quan trọng là bạn chọn một kế hoạch và nhất quán!


3
Thích để nhấn mạnh tính nhất quán.
pim

3
Tôi muốn nói rằng thực ra, đây là câu trả lời chính xác: stackoverflow.com/a/31968960/2013803 (nó có nhiều phiếu bầu hơn nhưng không được đánh dấu là "câu trả lời). AccountController dành cho tài khoản của người dùng hiện tại; sử dụng Số nhiều sẽ rất kỳ lạ trừ khi nó có để quản lý nhiều người dùng trong bảng điều khiển quản trị; nhưng đó là một trường hợp sử dụng khác và (IMHO) phải là một bộ điều khiển khác. Và cũng chỉ có một Trang chủ cho HomeController. Vì vậy, ... không , tính nhất quán phải là tất cả về việc hiểu những gì một bộ điều khiển làm và đặt cho nó một cái tên thích hợp dựa trên điều đó.
Jashan

162

Tôi sẽ không đồng ý với những câu trả lời trước đây về việc sử dụng số nhiều hoặc số ít và nhất quán. Mỗi bộ điều khiển nên sử dụng một quy ước khác nhau dựa trên việc chúng tương tác với đơn hay nhiều thực thể. Đặc biệt là vì tên bộ điều khiển được sử dụng theo mặc định trong URL.

Trong khi các mẫu dự án sử dụng số ít (HomeController, AccountController), chỉ có một Trang chủ và các hành động Tài khoản chỉ hoạt động trên một tài khoản duy nhất cho phiên. Tôi sẽ không mong đợi các URL của / homes truy cập trang chủ, tôi cũng không muốn vào / account để quản lý cài đặt tài khoản của mình.

HomesController số nhiều sẽ hoạt động cho một trang web bất động sản có các phương pháp liên quan đến việc liệt kê và tìm kiếm nhiều ngôi nhà: / homes / new-lists.


3
Đồng ý - Ví dụ: rất hợp UsersControllerlý nếu bạn thiết kế các tuyến đường của mình như /api/users(tất cả người dùng) và /api/users/{userId}(một người dùng)
Levi Fuller

2
Sẽ không /api/user/{userId}làm giống như cảm giác nhiều mặc dù, bạn có thể tranh luận rằng ngay cả trong trường hợp đối phó với nhiều người dùng, mà điều khiển của bạn phản ánh các loại thực thể, do đó HomeControllersẽ đối phó với các đơn vị của loại hình Home, do đó /Home/{homeId}/Home/All-Homes/
NibblyPig

Tôi đồng ý với lời giải thích này.
Hailee

13

Khi bạn thêm bộ điều khiển bằng cách sử dụng giàn giáo MVC cho một thực thể Entity Framework, VS2013 đặt tên bộ điều khiển là số nhiều, vì vậy tôi khuyên bạn nên sử dụng mặc định đó để đặt bộ điều khiển cho các thực thể là số nhiều.

CẬP NHẬT: Tôi đã thay đổi quyết định. LouD là chính xác. Nó phụ thuộc vào ngữ cảnh của bộ điều khiển.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.