2009-02-16 94 views
15

Tôi có nút lệnh được thêm vào lưới asp.net của tôi. Sau khi thực hiện hành động bằng nút đó, chúng tôi sẽ làm mới lưới để phản ánh dữ liệu mới. (về cơ bản hành động này trùng lặp hàng lưới).Làm mới trang sau một hành động postback trong asp.net

Bây giờ, khi người dùng làm mới trang bằng cách sử dụng F5, thông báo cảnh báo được hiển thị (để gửi lại thông tin đến máy chủ) nếu chúng tôi chọn "thử lại", hành động được lặp lại tự động.

Tôi biết đây là một vấn đề phổ biến trong asp.net, làm thế nào chúng ta có thể xử lý tốt nhất điều này?

Trả lời

32

Tìm kiếm GET sau khi POST - http://en.wikipedia.org/wiki/Post/Redirect/Get - về cơ bản, chuyển hướng đến trang hiện sau khi bạn đã hoàn tất chế biến của bạn biến cố.

Cái gì như:

Response.Redirect(Request.RawUrl)

2

Nếu bạn nghĩ rằng bạn không cần mô hình postback, bạn có thể muốn xem ASP.NET MVC.

1

Nếu tôi hiểu rõ, bạn chỉ cần kiểm tra xem bạn có đang ở trong tình huống hậu trường trước khi điền vào lưới của bạn hay không.
Giả sử bạn làm điều đó trên Page_Load, chỉ cần đặt các hoạt động với kiểm tra sau lại như thế này:

private void Page_Load(object sender, EventArgs e) 
{ 
    if(!this.IsPostBack) 
    { 
     // populate grid 
    } 
} 
1

Bạn cần phải gọi Response.Redirect (Request.Url.ToString());

hoặc bạn có thể quấn lưới với updatepanel và sau mỗi lệnh ràng buộc nguồn dữ liệu để lưới

2

Vấn đề là nút asp.net thực hiện bài viết dạng khi bạn nhấn một nút. Nếu bạn thay thế nút bằng một liên kết thì vấn đề của bạn sẽ biến mất. Bạn cũng có thể sử dụng nút thực hiện chức năng javascript để đặt document.location thành địa chỉ trang của bạn.

1

Bên trong thẻ <asp:Repeater> bạn đặt này:

EnableViewState="false" 

Điều này sẽ gây ra sự kiểm soát của bạn để làm mới mỗi khi tải trang, không có vấn đề nếu đó là một postback hay không.

+0

Làm thế nào mà không ai trả lời câu trả lời này? – slamsal

+0

Đã không làm việc cho tôi. – Andy

-1

ví dụ: nếu bạn nhấp vào nút 'hệ thống' sẽ bắt sự kiện 'button_click'. nếu bạn làm mới trang, hệ thống sẽ thực thi lại cùng một sự kiện. để don t có vấn đề này, trong chèn sự kiện của bạn: về sự kiện của bạn

private void button_click(object sender, System.EventArgs e) 
{ 
    button.Enabled =false; 
    button.Enabled =true; 
} 

là những gì bạn có nghĩa là?

+1

Đây không phải là tất cả những gì câu hỏi là về. –

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