Tôi đã có một chút mã mà tôi bắt đầu quản lý, và nó bắt đầu thất bại do một số dữ liệu bị thiếu trong cơ sở dữ liệu. Trường hợp này có thể xảy ra trong tương lai, vì vậy tôi muốn xử lý một cách duyên dáng các null trong giao diện người dùng.Thử nghiệm cho null, inline, trên một ASP.net Bind() gọi
Dưới đây là các mã hiện tại:
<asp:DropDownList ID="ddlContact" runat="server"
SelectedIndex='<%# Bind("contactInfo") == null ? "" : Bind("contactInfo") %>'>
Nó dường như không có bất kỳ ảnh hưởng đến nó, và trang vẫn ném một NullReferenceException. Nó cần phải là một Bind() do yêu cầu ràng buộc dữ liệu hai chiều, vì vậy tôi không thể sử dụng Eval(). Ý tưởng nào?
Tôi đã cố gắng sử dụng toán tử đồng bộ hóa null "??" nhưng điều đó mang lại cho tôi một lỗi biên dịch nói rằng Bind() không tồn tại trong ngữ cảnh hiện tại. Điều đó có thể sẽ trông như thế này:
<asp:DropDownList ID="ddlContact" runat="server"
SelectedIndex='<%# Bind("contactInfo") ?? string.Empty %>'>
Cảm ơn, tôi đã thấy liên kết thứ hai, nhưng không tìm thấy những gì tôi đang tìm kiếm. Nó xử lý chủ yếu với Eval() và không phải Bind(), và vì một lý do nào đó, có một sự khác biệt trong cách null được xử lý giữa chúng. – Carl
Theo như các liên kết đầu tiên, ngay sau khi tôi bao quanh Bind trong ngoặc đơn, tôi đã nhận "Ràng buộc không tồn tại trong ngữ cảnh này" lỗi biên dịch. Lạ quá. – Carl
Carl: Tôi nghĩ bạn không làm đúng cách. Bạn nên xử lý giá trị bị ràng buộc bằng cách sử dụng một cái gì đó giống như một phương thức sự kiện trong trang mã-đằng sau. Ở đó bạn có thể kiểm tra nếu giá trị của contactInfo là null và sau đó gán một giá trị thích hợp cho SelectedIndex. –