2009-07-31 36 views
8

Tôi đang xây dựng một ứng dụng trong ASP.NET 2.0 và giá trị cho tình trạng xem là rất lớn:giá trị ViewState lớn trong ASP.NET

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTExNz... 

Giá trị chứa 535.000 ký tự. Điều này có bình thường không? Làm thế nào tôi có thể làm cho nó nhỏ hơn?

Trả lời

11

Nhìn vào enabling ASP.NET tracing cho các trang web của bạn - điều đó sẽ cho bạn biết những điều khiển nào đang lưu trữ số lượng trong trạng thái xem. Sau đó bạn có thể đi và vô hiệu hóa trạng thái xem cho các điều khiển mà bạn biết không sử dụng nó.

+0

Cảm ơn bạn đã biết mẹo. Vấn đề là một danh sách thả xuống đã được điền từ một cơ sở dữ liệu. Không biết tại sao nó có một góc nhìn rất lớn. – Jaelebi

+0

Tôi khuyên bạn nên tiếp cận lập trình mà không có viewstate; cho phép và sử dụng chỉ khi được yêu cầu bởi biểu mẫu và/hoặc điều khiển. Trong trường hợp này, bạn có thể muốn đánh giá xem liệu ViewState có cần thiết cho điều khiển cụ thể này hay không. Nếu không chắc chắn, hãy tắt nó ở cấp độ kiểm soát, xem những gì bị hỏng, sau đó kích hoạt lại nó. Kích thước ViewState có thể là bội số của kích thước dữ liệu thực tế của kiểm soát, vì vậy bạn nên nhập dữ liệu một cách tiết kiệm - chỉ bao gồm những gì cần thiết. – Matt

6

ViewState có thể phát triển xấu xí với bạn. Về cơ bản tôi sẽ nói rằng vấn đề là ViewState được kích hoạt theo mặc định trên tất cả mọi thứ, và của những thứ không cần nó. Ví dụ cơ bản nhất sẽ là đối tượng Label.

Hãy thử vô hiệu hóa ViewState nơi bạn thấy không cần thiết (EnableViewState là thuộc tính bạn đang tìm kiếm).

+0

Điều đó có phụ thuộc vào các đối tượng trên mỗi trang hoặc trong toàn bộ ứng dụng không? – Jaelebi

+0

Nó sẽ phụ thuộc vào các đối tượng trong trang đó. –

+1

Có thể đáng để thêm ví dụ: '' – Blixt

2

Nếu bạn viết một chút mã, bạn có thể lưu trữ trạng thái xem trong máy chủ của mình thay vì gửi qua mạng cho một chuyến đi khứ hồi. Ngoài ra, bạn có thể nén nó để tiết kiệm không gian/băng thông và thời gian tải.

Here là điều tôi đã viết về nó một thời gian trước đó.

+0

Bỏ phiếu xuống do deadlink –

+0

Đã thêm liên kết chính xác. – Rakhitha

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