2012-06-20 30 views
7

Tôi đang sử dụng ASP.NET 4.0 WebForms. Tôi cũng đang sử dụng trang chính kế thừa từ các trang cái khác. Tôi có các bảng điều khiển bên trong. Về cơ bản có các thùng chứa đa cấp. Điều này gây ra các yếu tố có ID HUGE. Tôi thấy ID dài khoảng 300 byte!Làm thế nào để điều khiển máy chủ ASP.NET nhận được các ID ngắn nhất?

Khi có hàng trăm thành phần trong một trang, các ID này làm tăng đáng kể kích thước của trang. Tôi có một GridView với các điều khiển ràng buộc.

Cách tốt nhất để có mỗi điều khiển máy chủ có ID ngắn nhất có thể là gì? Có cách nào để mỗi phần tử không phụ thuộc vào vùng chứa của nó (không phải là ClientIDMode="static") ID ngay cả khi vẫn là duy nhất trong trang không? Cuối cùng, ASP.NET MVC làm giảm bớt vấn đề này?

Trả lời

1

Tôi nghĩ rằng ClientIDMode=static là một trong các cách. YOu cũng có thể thiết lập điều này trong web.conf của bạn. Và trong Asp.Net mvc, bạn có toàn bộ conrol trên html (đặc biệt là trong Razor). Không có suy nghĩ như webforms. Bạn có quyền kiểm soát việc gán id cho các thẻ html. Infact Asp.Net mvc là câu trả lời cho tất cả các khung công tác khác.

3

tôi sẽ đề nghị changing the ClientIdMode hoặc là Predictable hoặc tĩnh để xem nếu điều đó tạo ra ID ngắn hơn.

Thêm vào đó, CodeProject article này dường như đạt được những gì bạn cần.

1

Cuối cùng, ASP.NET MVC có làm giảm bớt vấn đề này không?

Có.

Không có ViewState trong MVC và bạn không chạy bất kỳ điều khiển nào trên máy chủ.

Bạn hiện không sử dụng bất kỳ điều khiển máy chủ nào tạo ra rất nhiều khó đọc HTML.

Bạn có toàn quyền kiểm soát trên ClientID trong MVC.

<a href="#" id="myID">Click</a> 

Đánh dấu ở trên sẽ luôn có id là myID trừ khi tôi tự thay đổi.

2

MVC hoàn toàn giảm bớt vấn đề này vì không có hiển thị phía máy chủ mã html theo cách tương tự. Tất cả các html của bạn là trực tiếp trong quan điểm của bạn, do đó bạn có toàn quyền kiểm soát tất cả các mục. Bạn cũng chạy rủi ro (trong trường hợp trang có hàng trăm đầu vào) của các đầu vào va chạm.

Một cách bạn có thể giúp rút ngắn tất cả html được tạo ra trong WebForms là xóa bất kỳ thứ gì không thực sự cần thiết để trở thành webusercontrol. Ví dụ, hầu hết các nhãn là tĩnh. Chúng có thể được thay thế bình thường bằng văn bản hoặc vật phẩm chuẩn không bao gồm thuộc tính runat="server". Điều này sẽ ngăn không cho id được tạo ở nơi đầu tiên. Một cách khác để giảm lượng rác được tạo ra là xóa nhiều điều khiển nhất có thể từ ViewState. Điều này sẽ ngăn chúng tải dữ liệu trạng thái của chúng và giữ cho ViewState ngắn hơn.

ClientIDMode là thuộc tính có thể kế thừa để bạn có thể đặt nó trong web.config (toàn cục), web.config (cục bộ) hoặc cấp trang. Bạn cũng có thể sử dụng nó riêng lẻ. Câu hỏi của bạn đặc biệt loại bỏ điều này, nhưng nó có lẽ sẽ là lựa chọn tốt nhất với sự linh hoạt nhất mà không cần viết lại những gì bạn đã có. Nếu viết lại không phải là một vấn đề, tôi khuyên bạn nên sử dụng MVC.

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