2012-07-12 30 views
19

Có bao giờ thích hợp để sử dụng runat = "server" trên một phần tử HTML chuẩn thay vì một điều khiển ASP.NET đúng không? Tôi có toàn quyền kiểm soát thiết lập html/văn bản của phần tử thông thường, vậy tại sao tôi không sử dụng nó thay vì điều khiển ASP.NET WebForms "clunky"?Khi nào sử dụng runat = "server" trên HTML thông thường

Nếu ai là tốt hơn so với khác, một số điểm đáng chú ý tôi muốn biết:

  • Hiệu suất chênh lệch
  • chênh lệch năng
  • khác biệt khác không rõ ràng?

Một khác biệt ví dụ:

<asp:Literal ID="mySpecialHtml" runat="server" /> 

<div id="mySpecialHtml" runat="server" /> 

Trả lời

16

Cả hai đều là các điều khiển máy chủ ASP.NET. Những cái tương ứng với các phần tử HTML nằm trong không gian tên System.Web.UI.HtmlControls và các điều khiển web nằm trong không gian tên System.Web.UI.WebControls.

Các điều khiển HTML có trọng lượng nhẹ hơn và tương ứng chính xác với phần tử HTML, trong khi các điều khiển web có nhiều tính năng hơn và có thể được hiển thị dưới dạng các phần tử HTML khác nhau tùy thuộc vào khả năng của trình duyệt và cài đặt của điều khiển.

Điều khiển HTML hiển thị dưới dạng một phần tử HTML, trong khi điều khiển web được hiển thị bằng 0 hoặc nhiều phần tử HTML. Ví dụ: kiểm soát Literal không được hiển thị dưới dạng phần tử, nó chỉ xuất ra văn bản của nó. Có các điều khiển khác không tự hiển thị bất kỳ phần tử nào, chẳng hạn như các điều khiển RepeaterPlaceHolder.Mặt khác, điều khiển CheckBoxList ví dụ được hiển thị dưới dạng một số phần tử HTML, một phần tử là table làm vùng chứa và input cho mỗi hộp kiểm bên trong nó.

Một ví dụ về điều khiển được trả lại sử dụng các yếu tố khác nhau là TextBox kiểm soát, mà sẽ được trả lại hoặc như là một input hoặc một yếu tố textarea tùy thuộc vào tài sản TextMode của nó.

Điều khiển web có nhiều tính năng hơn, nhưng cũng sử dụng nhiều tài nguyên hơn. Chúng có nhiều thuộc tính hơn và hỗ trợ những thứ như chủ đề và ràng buộc dữ liệu. Nhiều điều khiển web đưa dữ liệu vào ViewState, được gửi dưới dạng một phần của trang. Nếu bạn không cẩn thận, các ViewState có thể nhận được khá lớn, và ảnh hưởng đến thời gian tải của trang.

10

Lý do duy nhất mà tôi đã sử dụng điều khiển html máy chủ là khi tôi cần sự linh hoạt của văn bản html của riêng tôi nhưng vẫn cần thiết để truy cập vào nó là thuộc tính trong mã phía sau.

<div id="mySpecialHtml" runat="server" /> 

Trong mã sau:

mySpecialHtml.InnerHtml = "something else"; 
1

Tôi thích sử dụng điều khiển html khi có công việc nhiều hơn về phía khách hàng, và sử dụng điều khiển asp.net khi có công việc thêm về phía máy chủ (mã đằng sau).

4

Trình phân tích cú pháp ASP.NET diễn giải các phần tử html tiêu chuẩn w/runat = thẻ "máy chủ" dưới dạng điều khiển máy chủ html. Ví dụ:

<a runat="server"></a> 

được hiểu như là

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor> 

Vì vậy, hãy lưu ý rằng nếu bạn sử dụng runat = "server" hơn bạn đang sử dụng kiểm soát máy chủ HTML tương ứng.

Ngoài ra, ASP.NET có chứa một bộ điều khiển Web Server, tức là điều khiển HyperLink, cung cấp nhiều chức năng hơn, nhiều thuộc tính, sự kiện, v.v. nhưng có thể chậm hơn trong một số trường hợp.

+0

+1 Một số người nghĩ rằng việc thêm runat = "server" vào điều khiển HTML sẽ không thay đổi gì, khi thực tế họ đang chuyển đổi điều khiển này thành điều khiển máy chủ. –

1

Tôi tin rằng ASP.NET sử dụng một bộ điều khiển Web Server khác thường có nhiều chức năng hơn, nhưng nó thực sự tùy thuộc vào sở thích của bạn. Nếu công việc của bạn chủ yếu là phía máy chủ, tôi sẽ gắn bó với các điều khiển ASP.NET.

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