2009-04-08 24 views
28

Tôi hiểu lý do có người trợ giúp HTML trong ASP.NET MVC và mở rộng điều này để cung cấp cho riêng bạn, nhưng tôi tự hỏi liệu việc sử dụng người trợ giúp HTML có phải là một ý tưởng hay không.ASP MVC HTML Helpers - Tốt hay Xấu?

Tôi nghĩ một trong những lợi ích của ASP.NET MVC là kiểm soát HTML. Nếu bạn bắt đầu ẩn nó đi trong các chức năng trợ giúp mà tạo ra HTML không bạn bắt đầu mất khả năng hiển thị? Tôi đoán đây không phải là một vấn đề như vậy khi bạn đang tạo ra các điều khiển đơn giản như một nút, nhưng tôi đã thấy việc sử dụng các trình trợ giúp html để tạo lưới và đầu ra HTML phức tạp hơn.

Bây giờ tôi cũng hiểu lý do làm như vậy là giữ mọi thứ KHÔ, tránh trùng lặp. Nhưng không phải là một mối nguy hiểm có cái gì đó giống như mã phía sau đây? Ngoài ra, nếu bạn đang hợp tác với các nhà thiết kế thì sao? Nói chung nhà thiết kế sẽ tạo ra đánh dấu và áp dụng kiểu dáng. Nếu bạn bắt đầu tiêm tầm nhìn của bạn với những người trợ giúp tạo ra đánh dấu, điều này có làm cho sự cộng tác đó khó khăn không?

+0

Không. Miễn là người giúp đỡ không vi phạm các mối quan tâm của MVC, đó là họ đang làm một cái gì đó không phải là logic trình bày, sau đó không có gì sai với họ. Có, một số người trợ giúp phức tạp có thể thực sự vi phạm việc phân tách các mối quan tâm, nhưng đó thực sự là một lập luận khác nhau từ việc người đó có hay không là tốt hay xấu. –

Trả lời

14

"Kiểm soát HTML" là tiếp thị nói trên microsoft và là cách họ chọn thương hiệu nền tảng. Điểm của ASP.net MVC là nó đơn giản hơn và phù hợp hơn cho các ứng dụng web, sau đó toàn bộ mô hình theo định hướng sự kiện của webform và một số thứ mà mọi người bên ngoài không gian microsoft chuyển sang nhiều năm trước. Mặc dù vậy, Microsoft không thể nói điều đó, bởi vì họ có một khoản đầu tư rất lớn vào các biểu mẫu web, và nó là một phần quan trọng trong câu chuyện doanh nghiệp của họ.

Điều đó đang được nói, nếu bạn có logic nghiệp vụ trong những người giúp đỡ bạn đang sử dụng chúng sai. Về cơ bản, nó là mã chỉ dành cho logic trình bày được sao chép trên nhiều trang và mục tiêu là giữ các thẻ tập lệnh trong đánh dấu càng đơn giản càng tốt.

Miễn là bạn sử dụng những người trợ giúp theo cách chúng nên được sử dụng, nó sẽ khá tầm thường đối với các nhà thiết kế để học cách sử dụng. Chỉ cần nhớ rằng mục đích là để giữ cho mọi thứ đơn giản, nếu chúng kết thúc làm cho mọi việc trở nên phức tạp hơn, điều đó có nghĩa là chúng không được sử dụng đúng cách.

9

Bình luận tuyệt vời, Matt. Vẫn còn câu hỏi liệu có thực hiện MVC "thuần túy" hay không, người trợ giúp HTML là một ý tưởng hay. Tôi nghĩ đó là từ ma thuật, "thuần khiết". Bất cứ khi nào tôi chậm lại để suy nghĩ về cách "thích hợp" để làm việc, tôi thực sự cố gắng để xem liệu một cách tiếp cận cụ thể phù hợp với tầm nhìn của purist. Vậy, liệu một người thuần túy có sử dụng những người trợ giúp HTML không?

Tôi có khoảng 8/10 người theo chủ nghĩa thuần túy và tôi sẽ không sử dụng chúng. Tôi đã thấy lập luận này vượt qua các công nghệ và nêu vấn đề với MVC trong PHP và khung công tác Zend. Nó không cảm thấy đúng và với tôi, đó là biện pháp tốt nhất mà người ta có thể nghĩ ra.

+1

Không có gì trong mẫu MVC cho biết bạn không thể sử dụng hàm trợ giúp để tạo mã đánh dấu mẫu. MVC chỉ nói về sự tách biệt các mối quan tâm. Vì vậy, miễn là chức năng trợ giúp của bạn không vi phạm ranh giới của mối quan tâm, sau đó MVC không có gì để nói về nó. Như vậy, MVC "thuần khiết" từ một quan điểm mẫu hoàn toàn không đi vào nó, vì không có gì liên quan đến bất kỳ khía cạnh nào của MVC. Những người trợ giúp này hoàn toàn là một tính năng của khung nhìn (V trong MVC). –

3

Chắc chắn không có gì sai với người trợ giúp. Chúng được sử dụng để giữ cho quan điểm của bạn sạch sẽ và khai báo. Có một câu nói mà đi một cái gì đó giống như "nếu có một" nếu "tuyên bố trong quan điểm của bạn, bạn đang làm điều đó sai". Chúng được sử dụng trong nhiều framework MVC nổi bật như Ruby On Rails và Cake PHP. Hãy xem this post. "Purist" hay không, người giúp đỡ là một điều tốt và không nên nhầm lẫn với thực hành xấu hoặc trừu tượng bị rò rỉ.

1

Tôi nghĩ một điểm quan trọng mà những người khác không đề cập đến là tính di động của lượt xem của bạn.

Bạn có thể di chuyển HTML, javascript và CSS của mình sang ứng dụng trên nền tảng khác ngay lập tức. Bạn không phải chuyển đổi tất cả các HTMLHiders xấu xí .. xin lỗi, HTMLHelpers .. thành HTML thực tế.

Mặc dù tôi có mức độ quan tâm cao nhất đối với khuôn khổ .NET làm giảm thời gian phát triển của tôi và giúp công việc của tôi trở nên dễ dàng, tôi cảm thấy mạnh mẽ rằng các chế độ xem không phải là độc quyền.

Bạn có thể đạt được hầu như tất cả lợi ích từ khung công tác trong mô hình và bộ điều khiển. Việc tiêm phụ thuộc vào khung công tác trong lớp trình bày của bạn không hề có giá trị trong sự cân bằng, IMO.

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