Sử dụng: Các hạn chế của ViewState: Làm tăng hiệu suất khi sử dụng ViewState: – Tài liệu text

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.54 MB, 238 trang )

14
ViewState:

14.1 Khái niệm:

– Đây là một cơ chế của ASP.NET dùng để lưu lại các vết giá trị của các server control. Ví dụ: chuổi text hiển thị trên label control được lưu mặc định trên
viewstate. Ta có thể gán giá trị lúc thiết kế hoặc bằng code chỉ một lần lúc trang được load, và sau mỗi lần submit trang chuổi text của label được tự động lấy ra từ
ViewStates.
– ViewState là một trong các thuộc tính có sẵn của server control. Dùng khi thiết kế control trên web.
– ViewState là một hidden field được quản lí bởi ASP.NET framework. Khi ASP.NET thực thi một trang, giá trị của trang và của tất cả các control được thu
thập và được định dạng thành một dòng được mã hố và gán cho thuộc tính value của control hidden đặc biệt trên form. Giá trị này được truyền đi theo mỗi yêu cầu
của client cho server.
– Ta cần phân biệt giữa hidden field là control HTML, và hidden field lưu giá trị của ViewState.
Loại IDName
Value Ví dụ
ViewState chỉ có một tên
name duy nhất cho ViewState là :
__VIEWSTATE Thuộc tính Value
được mã hố một cách tự động mà
không cần áp dụng bất cứ một phương
pháp mã hoá nào. input
type =hidden
name =__VIEWSTATE
value =dDwyMDY1OTM4NTc3Ozs+Oh5q+u
BcE0xL4JyWhXlmtrKjM=
HTML Hidden field
ID do người phát triển trang web đặt
khi họ thiết kế trang. Có thể có
nhiều tên khác nhau.
Thuộc tính Value khơng tự động mã
hố do đo ta có thể thấy được chính xác
nội dung khi view source.
INPUT id
=txtHTMLHidden type
=hidden value
=HTML Hidden value
– Khi sử dụng ViewState ta phải chú ý một số điểm sau đây: + Bắt buột phải có thẻ form phía server form runat=”server” trên trang
aspx. + Một trang sẽ tự động lưu khoảng 20 bytes hoặc nhiều hơn các thơng tin
vào ViewState. Do đó nếu ta khơng cho phép chế độ ViewState của một trang hay của cả ứng dụng thì ta vẫn thấy một số giá trị trong thuộc tính value của tag
ViewState.
+ Trong trường hợp trang khơng có nhu cầu trao đổi dữ liệu với server trang tĩnh, ta có thể loại bỏ ViewState trong trang bằng cách bỏ đi tag form.
+ ViewState chỉ có tác dụng trên trang mà nó được sử dụng ta khơng thể truy cập giá trị của biến trên ViewState từ một trang khác.

14.2 Sử dụng:

Cú pháp Ví dụ
Ghi giá trị xuống ViewState[“var”] = value;
ViewState[T1] = test1; Created by THÁI NGỌC DUY 118
MSDN based-written. 1182012
ViewState Var: tên biến để chứa giá trị.
Value: giá trị cần lưu Lấy giá trị ra
Var = ViewState[“Var2”]; Var: tên biến cần lưu giá trị.
Var2: tên biến chứa giá trị cần lấy ra trong ViewState.
string str;
str = ViewState[T1].ToString;
Ngồi ViewState còn được sử dụng khi thiết kế control cho web. Phần này sẽ nói đến khi thiết kế web control.

14.3 Các hạn chế của ViewState:

– Trong một số trường hợp sử dụng ViewState không phải là lựa chọn tốt vì một số lý do:
+ Khả năng lưu trữ dữ liệu lớn. Khi đó sẽ làm cho kích thước trang và kích thước của form tăng lên khi gửi cho trình duyệt.
+ Sự an tồn dữ liệu. Mặc dù dữ liệu trong ViewState đã được mã hoá nhưng sẽ an tồn hơn nếu dữ liệu đó client khơng thể xem được.
+ Hạn chế các kiểu dữ liệu ghi trong ViewState. ViewState chỉ chứa được các kiểu dữ liệu cơ bản. Các kiểu có cấu trúc khơng lưu được.

14.4 Làm tăng hiệu suất khi sử dụng ViewState:

– Khi sử dụng ViewState nên lưu ý một số điểm sau: + Disable ViewState khi ta khơng có nhu cầu sử dụng. Phần sau sẽ nói rõ một
số cách để disable ViewState. + Không sử dụng nhiều biến trong ViewState.
+ Chỉ sử dụng ViewState trong các trường hợp cần thiết. Ví dụ ta có một trang chỉ hiển thị một lưới chứa dữ liệu thì khơng nên dùng ViewState vì thơng thường kích
thước dữ liệu của một lưới sẽ rất lớn do đó sẽ làm tăng kích thước của trang lên rất nhiều.

14.5 Disabling ViewState:

Trong một số trường hợp không dùng ViewState cho một số đối tượng thì ta phải disable thuộc tính ViewState cho đối tượng đó.
Phạm vi
Nơi cấu hình Mơ tả
Ví dụ
Đối với từng
control trên
form Trong thẻ định nghĩa control
đó ở file aspxhtml. Mở form ở chế độ thiết kế
design, chọn phần xem mã html nhấn Ctrl + PageDown,
tìm đến tag định nghĩa control cần cấu hình, thêm thuộc tính
EnableViewState=false
. Tắt chế độ
ViewSate của control
hiện tại. Các giá trị
của control sẽ không
được tự động lưu
lại trong ViewState
cuả form.
asp:datagrid EnableViewState
=false …
Đối với một
Trong thẻ cấu hình trang. Cũng mở form ở chế độ
Tắt chế độ ViewState
Page EnableViewState=False …
Created by THÁI NGỌC DUY 119 MSDN based-written.
1182012
trang. HTML như trên, tìm đến thẻ
Page … thường ở đầu
file , thêm thuộc tính
EnableViewState=false
.
cho tồn trang.
Đối với toàn
ứng dụng.
Trong file web.config, mở file ở chế độ soạn thảo, tìm tag
pages nếu khơng thấy có thể thêm vào, tìm thuộc tính
enableViewState nếu chưa có thì thêm vào đặt giá trị =
false enableViewState=false. Tắt chế độ
ViewState cho toàn
ứng dụng.
pages enableViewState
=false
15
Cấu hình tag sessionState trong file web.config:

15.1 Khái niệm:

– Đây là một cơ chế của ASP.NET dùng để lưu lại các vết giá trị của các server control. Ví dụ: chuổi text hiển thị trên label control được lưu mặc định trênviewstate. Ta có thể gán giá trị lúc thiết kế hoặc bằng code chỉ một lần lúc trang được load, và sau mỗi lần submit trang chuổi text của label được tự động lấy ra từViewStates.- ViewState là một trong các thuộc tính có sẵn của server control. Dùng khi thiết kế control trên web.- ViewState là một hidden field được quản lí bởi ASP.NET framework. Khi ASP.NET thực thi một trang, giá trị của trang và của tất cả các control được thuthập và được định dạng thành một dòng được mã hố và gán cho thuộc tính value của control hidden đặc biệt trên form. Giá trị này được truyền đi theo mỗi yêu cầucủa client cho server.- Ta cần phân biệt giữa hidden field là control HTML, và hidden field lưu giá trị của ViewState.Loại IDNameValue Ví dụViewState chỉ có một tênname duy nhất cho ViewState là :__VIEWSTATE Thuộc tính Valueđược mã hố một cách tự động màkhông cần áp dụng bất cứ một phươngpháp mã hoá nào. inputtype =hiddenname =__VIEWSTATEvalue =dDwyMDY1OTM4NTc3Ozs+Oh5q+uBcE0xL4JyWhXlmtrKjM=HTML Hidden fieldID do người phát triển trang web đặtkhi họ thiết kế trang. Có thể cónhiều tên khác nhau.Thuộc tính Value khơng tự động mãhố do đo ta có thể thấy được chính xácnội dung khi view source.INPUT id=txtHTMLHidden type=hidden value=HTML Hidden value- Khi sử dụng ViewState ta phải chú ý một số điểm sau đây: + Bắt buột phải có thẻ form phía server form runat=”server” trên trangaspx. + Một trang sẽ tự động lưu khoảng 20 bytes hoặc nhiều hơn các thơng tinvào ViewState. Do đó nếu ta khơng cho phép chế độ ViewState của một trang hay của cả ứng dụng thì ta vẫn thấy một số giá trị trong thuộc tính value của tagViewState.+ Trong trường hợp trang khơng có nhu cầu trao đổi dữ liệu với server trang tĩnh, ta có thể loại bỏ ViewState trong trang bằng cách bỏ đi tag form.+ ViewState chỉ có tác dụng trên trang mà nó được sử dụng ta khơng thể truy cập giá trị của biến trên ViewState từ một trang khác.Cú pháp Ví dụGhi giá trị xuống ViewState[“var”] = value;ViewState[T1] = test1; Created by THÁI NGỌC DUY 118MSDN based-written. 1182012ViewState Var: tên biến để chứa giá trị.Value: giá trị cần lưu Lấy giá trị raVar = ViewState[“Var2”]; Var: tên biến cần lưu giá trị.Var2: tên biến chứa giá trị cần lấy ra trong ViewState.string str;str = ViewState[T1].ToString;Ngồi ViewState còn được sử dụng khi thiết kế control cho web. Phần này sẽ nói đến khi thiết kế web control.- Trong một số trường hợp sử dụng ViewState không phải là lựa chọn tốt vì một số lý do:+ Khả năng lưu trữ dữ liệu lớn. Khi đó sẽ làm cho kích thước trang và kích thước của form tăng lên khi gửi cho trình duyệt.+ Sự an tồn dữ liệu. Mặc dù dữ liệu trong ViewState đã được mã hoá nhưng sẽ an tồn hơn nếu dữ liệu đó client khơng thể xem được.+ Hạn chế các kiểu dữ liệu ghi trong ViewState. ViewState chỉ chứa được các kiểu dữ liệu cơ bản. Các kiểu có cấu trúc khơng lưu được.- Khi sử dụng ViewState nên lưu ý một số điểm sau: + Disable ViewState khi ta khơng có nhu cầu sử dụng. Phần sau sẽ nói rõ mộtsố cách để disable ViewState. + Không sử dụng nhiều biến trong ViewState.+ Chỉ sử dụng ViewState trong các trường hợp cần thiết. Ví dụ ta có một trang chỉ hiển thị một lưới chứa dữ liệu thì khơng nên dùng ViewState vì thơng thường kíchthước dữ liệu của một lưới sẽ rất lớn do đó sẽ làm tăng kích thước của trang lên rất nhiều.Trong một số trường hợp không dùng ViewState cho một số đối tượng thì ta phải disable thuộc tính ViewState cho đối tượng đó.Phạm viNơi cấu hình Mơ tảVí dụĐối với từngcontrol trênform Trong thẻ định nghĩa controlđó ở file aspxhtml. Mở form ở chế độ thiết kếdesign, chọn phần xem mã html nhấn Ctrl + PageDown,tìm đến tag định nghĩa control cần cấu hình, thêm thuộc tínhEnableViewState=false. Tắt chế độViewSate của controlhiện tại. Các giá trịcủa control sẽ khôngđược tự động lưulại trong ViewStatecuả form.asp:datagrid EnableViewState=false …Đối với mộtTrong thẻ cấu hình trang. Cũng mở form ở chế độTắt chế độ ViewStatePage EnableViewState=False …Created by THÁI NGỌC DUY 119 MSDN based-written.1182012trang. HTML như trên, tìm đến thẻPage … thường ở đầufile , thêm thuộc tínhEnableViewState=falsecho tồn trang.Đối với toànứng dụng.Trong file web.config, mở file ở chế độ soạn thảo, tìm tagpages nếu khơng thấy có thể thêm vào, tìm thuộc tínhenableViewState nếu chưa có thì thêm vào đặt giá trị =false enableViewState=false. Tắt chế độViewState cho toànứng dụng.pages enableViewState=false15Cấu hình tag sessionState trong file web.config: