10/10/2018, 13:19

Vấn đề Refresh trang trong ASP.net

Mình đang làm web truyện và mình làm lượt xem cho từng truyện. Mình thực hiện hàm update lượt xem trong PageLoad :

if(!IspostBack)
{
string sql_Update = "Update Truyen set LuotXem = LuotXem + 1 where MaTruyen = " + MaTruyen;
}

Nhưng khi bấm F5 refresh lại trang web thì nó cũng vào hàm trên và cứ thể tăng lên 1. Người dùng F5 bao nhiều lần thì tăng lượt xem lên bấy nhiêu. Các bạn biêt cách nào giải quyết vấn đề trên không? Có ý kiến mình tham khảo thì nên dùng địa chỉ IP để kiểm tra, nhưng mình thấy không thuận tiện lắm. Các bạn biết cách thì chia sẽ giúp mình nhé. Cảm ơn các bạn!
trannamcn viết 15:28 ngày 10/10/2018
Thống kê kiểu này flood ầm ầm bác ơi !! Ghi cả IP lại nữa nhé !!
thien_suden viết 15:26 ngày 10/10/2018
Nếu theo cách của mình thì code thế nào để khi người dùng Refresh thì lượt xem không tăng hả bạn? và còn cách nào khác ngoài sử dụng IP không bạn?
chet7h45 viết 15:27 ngày 10/10/2018
Khi bạn bấm f5 thì trình duyệt sẽ gửi 1 get lên server và server sẽ trả về 1 page mới, tức là !IsPostBack sẽ được gọi khi bạn refresh.

Bạn có thể thay HyperLink dẫn đến trang hiển thị truyện bằng LinkButton.
Khi người dùng click vào LinkButton bạn cho tăng lượt view lên, sau đó Redirect đến trang hiển thị truyện.
thien_suden viết 15:35 ngày 10/10/2018
Mình cũng nghĩ dùng link Button như bạn, nhưng 1 truyện tồn tại ở nhiều chỗ như Tìm kiếm, Trang chủ, truyện hot, truyện mới ... Nếu làm vậy thì cần nhiều link Button. Và, mình code tay dùng thẻ a chứ không dùng kéo thả của visual nên dùng cách này không khả thi, hơn nữa khi search google vào trang thì lượt xem cũng không tăng. Bạn có cách giải quyết khác không?
chet7h45 viết 15:27 ngày 10/10/2018
Bạn có thể lưu các trang user đã vào vô trong cookie. Khi đó bạn có thể kiểm tra trang nào đã vào, trang nào chưa.
Bài liên quan
0