Khi tôi bắt đầu đăng lại bằng __doPostBack, một tệp được tạo và quay lại người dùng để tải xuống trong HttpContext.Current.Response
.Làm thế nào tôi có thể ngừng đăng lại từ làm mới trang tại máy khách
Bởi vì tôi thay đổi Response
, trang bao gồm cả giá trị javascript của nó không được sửa đổi
Nhưng khi tôi không có tập tin đến đầu ra, trang web được làm mới (vì postback) và sửa đổi javascript trên trang là mất đi.
Làm cách nào để 'dừng' quá trình đăng lại tiếp tục và duy trì trang hiện tại của tôi? Tôi không thể sử dụng postback không đồng bộ, vì tôi cần đăng lại để cho phép người dùng tải xuống tệp.
EDIT: biết thêm sau khi một số câu hỏi trong các ý kiến:
- Các tập tin được yêu cầu trong một yêu cầu webservice. Webservice cần để thực hiện truy vấn nặng để xác định xem tệp có được tạo hay không. Tôi thích điều này chỉ xảy ra một lần.
- Người dùng có thể kéo/thả một số bộ lọc sẽ được sử dụng trong tệp yêu cầu. Nếu không có tệp nào, người dùng sẽ có thể thay đổi bộ lọc của mình, vì vậy đó là lý do tại sao trang không được thay đổi.
Đầu tiên mà nói đến cái tâm của tôi là (không kiểm tra): sử dụng một nút ẩn như [PostbackTrigger] (http://msdn.microsoft .com/vi-us/library/system.web.ui.postbacktrigger.aspx) cho UpdatePanel của bạn. Trong trình xử lý serverside của bạn, nơi bạn đã tạo tệp (hoặc không) cho đến thời điểm này, hãy đăng ký javascript mà 'nhấp vào' nút này nếu bạn có tệp. Xử lý sự kiện này và phân phối tệp. Nếu không có tệp, không đăng ký tập lệnh. –
Nó sẽ hoạt động, nhưng vấn đề của tôi là tập tin được yêu cầu từ một webservice. Tôi không biết nếu tôi sẽ có một tập tin cho đến khi yêu cầu được thực hiện. Với giải pháp của bạn, tệp sẽ được tạo hai lần. Một yêu cầu nặng nề của nó có thể mất một thời gian, vì vậy tôi không muốn làm điều đó hai lần. –
Tại sao bạn cần tạo tệp để biết tệp đó có tồn tại không? Nghe có vẻ kỳ lạ. Tôi sẽ thêm một phương thức vào dịch vụ web của bạn để kiểm tra điều này mà không cần tạo. –