10/10/2018, 11:12

Thắc mắc về ViewState trong asp.net

hi các Bác,
em ko hiểu viewstate có tác dụng gì trong asp.net. Bác nào rành về nó có thể giải thích giúp e duoc ko?

thanks các bác nhiều
QuanN viết 13:27 ngày 10/10/2018
Bản chất của web là stateless. MS sử dụng kỹ thuật ViewState đễ duy trì state (giá trị) của các controls ngang qua postbacks.
whitepenguin viết 13:16 ngày 10/10/2018
Có tác dụng để nhớ các giá trị lần trước
Mỗi khi cậu truy cập trang web, server sẽ trả về dử liệu rồi ngắt kết nối, nếu cậu xài IE cậu sẽ thấy khi sever trả dử liệu xong, IE load hết cậu sẽ thấy chữ done trong status bar.

Viewstate là để dùng cho post back, khi cậu nhấn 1 button, thì toàn bộ viewstate sẽ gửi về cho server, server đọc viewstate này và gán giá trị lại cho control.

Làm như thế để có cảm tưởng giống như là lập trình winform đó mà.
itman85 viết 13:18 ngày 10/10/2018
Thanks các bác đã reply,
Theo như câu trả lời của các bác thì viewstate được tạo ra từ server side đúng không? nó lưu lại giá trị của lần postback trước và gán lại giá trị đó cho các control trong lần postback tiếp theo phải ko?
Nhưng nếu viewstate được tạo từ phía server thì nếu như trên form có thay đổi gì thì giá trị thay đổi đó ko thể có trong viewstate vậy sau khi thay đổi mà xảy ra post back thì viewstate dùng lam gì? làm sao mà viewstate có được giá trị mới nhất của control?

Mong các bác giải thích giúp em.
Thanks các bác nhiều
whitepenguin viết 13:22 ngày 10/10/2018
Viewstate không chỉ lưu giá trị của control mà con lưu thuộc tính nữa

Mục đích Viewstate nhớ trạng thái của các control không bị thạy đổi tại server.

Mấy cái giá trị cậu edit trên post back cũng sẽ được lưu vào viewstate khi server trả về

Tui lấy ví dụ thế này cậu có 3 controls,
1 cái là Dropdown, 1 textbox ,1 button
Ví dụ là nhiệm vụ của cậu là khi người dùng bỏ số vào textbox rồi nhấn OK thì thay đổi chiều dài của textbox, khi người dùng chọn 1 item thì thay đổi chữ trên button. Việc thay đổi này phải diển ra tại server

cậu viết onlick event, và lấy giá trị textbox rồi sửa cho textbox.Width = int.parse(textbox.value)
Chiều dài và giá trị của textbox sẽ lưu trong viewstate

ngoài ra cậu còn phải viết onchange event để thay đổi già trị của button.

Ví dụ cậu post số 100 rồi ấn OK, thì số 100 post về bởi Onclik button, cậu sửa độ dài, 100 và Width sẽ lưu lại viewstate
Lần sau cậu không dùng button nữa mà cậu chọn item, item post về, cậu thay đổi giá trị. cho button và server trả lại kết quả

Lần post báck đó cậu vẩn thấy số 100 vầ chiều dài của Box củng bằng 100 là do tác dụng viewstate nhớ cho cậu
Nói cung là viewstate dùng để nhớ trạng thái của trang web, chiều cao chiều rộng, giá trị vị trí .....
ebookit viết 13:17 ngày 10/10/2018
whitepenguin nói đúng về viewstate rồi. và theo mình hiểu là cái này không ảnh hưởng về SEO
QuanN viết 13:18 ngày 10/10/2018
Understanding ASP.NET View State
ASP.NET View State Overview
Understanding ViewState and Postback Processing in ASP.NET applications

ViewState được đọc và gán giá trị lại cho control trong bước Load View State. Trong bước kế tiếp, Load Postback Data, giá trị mới sẽ gán cho control và ghi vào ViewState trong bước Save View State trước khi gửi trả lại cho client.

Ví dụ, cho textbox, giá trị cũ của nó khi postback tới server được duy trì trong bước Load View State, nhưng ngay sau đó, trong bước Load Postback Data, giá trị mới được ghi vào Text property của textbox và cũng được updated trong ViewState trong bước Save View State trước khi trả về browser.
Bài liên quan
0