Càng sử dụng ASP.NET, càng có nhiều if (!IsPostBack) {}
dường như vô nghĩa ...Thực hiện IsPostBack trong tải trang
dụ đầu tiên:
Ví dụ, tôi chỉ google một vấn đề, họ nói sử dụng điều này như một phần của giải pháp:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
Chính xác như được mã hóa, LoadComplete sẽ chỉ kích hoạt lần tải đầu tiên. Sau khi nhấp vào nút hoặc bất kỳ thứ gì kích hoạt đăng lại, sự kiện LoadComplete sẽ bị bỏ trống, do đó bỏ qua trình xử lý sự kiện. Do đó, "sửa lỗi" của chúng chỉ hoạt động khi tải đầu tiên = vô giá trị. Tôi đã nhanh chóng nhận xét ra số if (!Page.IsPostBack) {}
và bây giờ sự kiện luôn kích hoạt như mong muốn.
Thứ hai ví dụ:
Tôi đang cố gắng để treo các sự kiện để một nút tự động tạo ra (mà bằng cách này, tôi không thể có được để làm việc [GRR!]). Tôi thấy ví dụ cho thấy điều này:
myEditToggleButton = new Button();
myEditToggleButton.ID = "editToggleButton";
//^GOTTA HAVE THIS FOR EVENTS TO WORK! (supposedly, I haven't seen it work...)
if (!IsPostBack)
{
myEditToggleButton.Click += new EventHandler(myEditToggleButton_Click);
}
Controls.Add(myEditToggleButton);
Giống như ví dụ đầu tiên, sự hiểu biết của tôi là sự kiện này sẽ không được nối sau khi tải trang đầu tiên, do đó nút là "trơ" sau một cú nhấp chuột (vì khi nhấp vào gây ra một postback).
Câu hỏi:
Khi nào bạn nên sử dụng if (!IsPostBack) {}
? Tôi đoán nó phải làm với các điều khiển được tạo ra chỉ đánh dấu.
Thành thật mà nói, bất kỳ mã nào trong sự kiện tải không được bao bọc trong một Page.IsPostBack là một lá cờ đỏ cho tôi trong quá trình đánh giá mã. Nó thường chỉ ra một sự hiểu lầm về cách các biểu mẫu web hoạt động, đặc biệt là liên quan đến ràng buộc dữ liệu. –