2012-05-20 24 views
8

Tôi đang thiết lập một hình thức trong ASP cổ điển và nó sẽ tải lại sau khi nộp (hành động tự)Làm thế nào để kiểm tra hình thức trình ASP cổ điển

Nhưng lần này nó cho thấy kết quả của bản đệ trình trước đó, vì vậy làm thế nào tôi có thể kiểm tra gửi POST đã được thực hiện?

Giống như trong PHP:

if($_POST['submit']) { 
    show results... 
} 

Trả lời

23

Bạn có một vài lựa chọn:

Phương pháp 1 - Kiểm tra các phương thức yêu cầu:

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then 
    'Show Results... 
End If 

Phương pháp 2 - thêm một trường ẩn cho biểu mẫu của bạn với một giá trị sau đó kiểm tra xem giá trị đó có đã được đăng tải:

If Request.form("HiddenValue") = "1" Then 
    'Show Results... 
End If 

Phương pháp 3 - Kiểm tra xem bộ sưu tập request.form chứa mục:

If Request.Form.Count > 0 Then 
    'Show Results... 
End If 

Phương pháp 4 - Đăng lên một chuỗi truy vấn (ví dụ: phương pháp tập hợp các <form> tới? bài = yes)

If Request.QueryString("post") = "yes" Then 
    'Show Results... 
End If 

Cái nào để chọn?

lựa chọn ưa thích của tôi là phương pháp 4 - như nó dễ dàng hiển thị trong thanh địa chỉ như những gì đang xảy ra - nếu vì một lý do tôi muốn tránh trình bày mức độ chi tiết trong url, tôi có xu hướng sử dụng tùy chọn 3 như thật dễ dàng để triển khai, không yêu cầu thay đổi trên biểu mẫu nguồn & là đáng tin cậy. Đối với hai phương pháp khác:

  • Phương pháp 1 - Tôi có xu hướng tránh dựa vào biến máy chủ nếu tôi không có quyền kiểm soát 100% so với máy chủ - không biện minh thực sự cho rằng, chỉ là một thói quen chung tôi có xu hướng làm việc.
  • Phương pháp 2 - Bạn có thể thay thế trường ẩn cho trường khác sẽ luôn chứa một giá trị.
+0

Thats đẹp, nhưng bạn sẽ giới thiệu điều gì? Các cách tiếp cận khác nhau so sánh như thế nào? – AnthonyWJones

+0

@AnthonyWJones Aye, điểm tốt, câu trả lời được chỉnh sửa để làm rõ một chút. – HeavenCore

+4

FWIW, tôi muốn giới thiệu Phương pháp 1. Weird FUD trên một máy chủ bạn không kiểm soát là không hợp lý, nếu bạn không thể tin tưởng máy chủ để làm một cái gì đó cơ bản như thế này thì có lẽ bạn nên tìm một máy chủ khác nhau. Biến 'REQUEST_METHOD' có sẵn cho mục đích phát hiện HTTP Method nào đang được sử dụng. Phương pháp 2 và 4 yêu cầu nhà phát triển gây ô nhiễm mã của họ với nội dung không cần thiết để IMO nên tránh khi có các lựa chọn thay thế. Phương pháp 4 cũng là một cách tiếp cận khá tốt nhưng thiếu tính rõ ràng của mục đích mà Phương pháp 1 thực hiện. – AnthonyWJones

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