2008-11-05 50 views
7

Trong ASP.NET MVC, chúng tôi được yêu cầu sử dụng hậu tố "Bộ điều khiển" cho tất cả các bộ điều khiển. Điều này có vẻ hạn chế không cần thiết - có lý do kỹ thuật nào không?Tại sao bộ điều khiển dựa trên tên ASP.NET MVC?

Tôi hầu như chỉ tò mò, nhưng có thể thấy các tình huống trong đó các quy tắc đặt tên linh hoạt hơn có thể cải thiện tổ chức mã. Không thể phát hiện ra các lớp điều khiển có thể được thực hiện dễ dàng bằng cách sử dụng sự phản chiếu để tìm kiếm các lớp có nguồn gốc từ Controller? Hoặc yêu cầu các lớp điều khiển được đánh dấu bằng ControllerAttribute?

+0

@ shog9: Cảm ơn sự cải thiện về đọc viết. –

+0

@Augusto: không sao cả. – Shog9

Trả lời

14

Cộng đồng MVC chịu ảnh hưởng nặng nề bởi Ruby on Rails, giá trị "convention over configuration". Bằng cách chỉ đặt tên cho mọi thứ một cách nhất quán, ứng dụng có thể chạy với cấu hình bằng không.

+0

Bạn đánh bại tôi với nó! Đây là một liên kết: http://en.wikipedia.org/wiki/Convention_over_configuration –

+0

Yeah; cảm ơn. Tôi cũng nắm lấy nó. –

3

Một trong những lợi ích của quy ước này là việc phổ biến phân đoạn URL, bộ điều khiển và lớp mô hình đều có cùng tên.

URL:/sản phẩm/ Bộ điều khiển: Sản phẩm: Bộ điều khiển mẫu: sản phẩm

này sẽ gây ra một cuộc xung đột đặt tên. Vì vậy, chúng tôi đã thực hiện một quy ước để có tên bộ điều khiển được kết hợp với "Bộ điều khiển" để tránh xung đột này. Tuy nhiên, bạn có thể ghi đè hành vi này thông qua API mở rộng của chúng tôi.

+0

Thực ra Phil ... Bởi REST các phân đoạn URL nên đặt tên các bộ sưu tập có nghĩa là các bộ điều khiển thường là số nhiều như trong 'ProductController' (/ products/1) trong khi thực thể mô hình là số ít như' Product' vì bộ sưu tập hiển thị các khung nhìn sẽ sử dụng mô hình 'IEnumerable '. Vì vậy, sẽ không có xung đột nào. Nhưng quy ước là tốt, bởi vì nó được sử dụng elswhere là tốt (không có người phàn nàn) như trong các thuộc tính, bộ sưu tập, từ điển, danh sách vv Các loại này cũng * thông thường * sử dụng hậu tố. Vì lý do khả năng phát triển của khóa học. –

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