2008-11-08 32 views
11

Có lý do cụ thể nào khiến tôi nên sử dụng các phương pháp Html.CheckBox, Html.TextBox, v.v ... thay vì chỉ viết HTML theo cách thủ công không?Có lợi ích gì khi sử dụng HtmlHelper trong MVC?

<%= Html.TextBox("uri") %> 

ám HTML sau

<input type="text" value="" name="uri" id="uri"/> 

Nó đoán nó giúp bạn tiết kiệm một vài nét chính nhưng khác hơn thế. Có một lý do cụ thể tại sao tôi nên đi ra khỏi con đường của tôi để sử dụng HtmlHelpers bất cứ khi nào có thể hoặc là nó chỉ là một điều ưu tiên?

Trả lời

5

Có những lợi ích rất lớn: phương pháp

Nó đã quá tải để điền trước các giá trị (định dạng, và an toàn cho HTML) giống như các ViewState.

Tính năng này cho phép tích hợp sẵn tính năng Xác thực của MVC.

Nó cho phép bạn ghi đè hiển thị bằng cách cung cấp DLL của riêng bạn để thay đổi hiển thị (một loại phương pháp loại "Bộ điều hợp bộ điều hợp").

Nó dẫn đến ý tưởng xây dựng "kiểm soát" của riêng bạn: http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx

+2

Không, ViewState là ** không ** đó để duy trì giá trị của một textbox trên postback (s); đó là công việc của IPostBackDataHandler (System.Web.UI namespace, System.Web assembly). –

+0

Chỉnh sửa tốt thuật ngữ của tôi ... +1 :) –

1

Tôi chưa làm MVC quá lâu, nhưng tôi đã viết một số phương pháp mở rộng để tạo các tab menu dựa trên Html.ActionLink. Nó cho phép tôi nhất quán với cách sử dụng của tôi và, nếu tôi quyết định thay đổi cách thức các menu CSS của tôi hoạt động, chỉ sửa đổi một phương thức duy nhất để xuất ra định dạng tab mới.

Việc sử dụng khác mà tôi đã thực hiện trong số đó là ở đầu ra có điều kiện bằng cách sử dụng Chế độ xem để cung cấp giá trị cho các điều khiển.

2

Một điều là nhất quán ... Tôi luôn luôn quên thuộc tính tên. Ngoài ra, bạn có thể mở rộng các chức năng cho các dự án của riêng bạn. Chúng không được gọi là người giúp đỡ vì không có gì!

2

Ưu điểm của việc sử dụng lớp trừu tượng là việc kiểm tra mã của bạn trong tương lai theo cách có thể cắm được. Có thể hôm nay, bạn tạo HTML 4 trang nhưng ngày mai bạn muốn tạo trang XHTML hoặc XAML hoặc XUL. Đó là rất nhiều thay đổi nếu bạn chỉ mã cứng các thẻ ở mọi nơi, đặc biệt nếu bạn có hàng trăm trang. Nếu mọi thứ đang gọi thư viện này, thì tất cả những gì bạn phải làm là viết lại thư viện. Nhược điểm là nó thường được coi là hơi ít có thể đọc được bởi con người. Vì vậy, nó có thể làm tăng nhu cầu nhận thức về lập trình bảo trì của bạn. Những lợi thế và bất lợi thực sự không có gì để làm với MVC.

7

Một lợi ích khác là nếu Chế độ xem của bạn chứa giá trị khớp với tên của trường, trường sẽ được điền.

ví dụ:

ViewData["FirstName"] = "Joe Bloggs"; 

<%=Html.TextBox("FirstName") %> 

sẽ làm

<input type="text" value="Joe Bloggs" id="FirstName" /> 
2

Nó thực sự tự động populates textbox của bạn dựa trên đầu ViewData.Model.uri của bạn và thứ hai bởi ViewData [ "uri"]. Làm nó bằng tay bạn sẽ cần phải làm <input value="<%Html.Encode(ViewData.Model.Uri"%>" />

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