2013-02-22 89 views
5

Nhóm của tôi đang làm việc trên một ứng dụng web sử dụng MVC4 với .NET 4.5. Một nhiệm vụ là tạo danh sách thả xuống cha mẹ sẽ cập nhật danh sách thả xuống con khi giá trị được chọn trong phụ huynh - ví dụ danh sách thả xuống của các tiểu bang sẽ lọc danh sách các thành phố khi một trạng thái được chọn.Danh sách thả xuống thả xuống Nguồn dữ liệu

Trên các dự án khác của chúng tôi, chúng tôi sử dụng các cuộc gọi Ajax tới dịch vụ web hoặc cơ sở dữ liệu để điền các giá trị của một đứa trẻ khi giá trị gốc được chọn. Trong ví dụ trên, tiểu bang Minnesota được chọn và một cuộc gọi Ajax được thực hiện cho cơ sở dữ liệu để lấy tất cả các thành phố ở MN. Tôi đã đọc các bài viết khác trên đây và hướng dẫn làm theo khái niệm này. Một nhà phát triển mới trong nhóm của chúng tôi tin rằng phương pháp trên không hiệu quả và tốt hơn nên lấy tất cả các thành phố khi tải trang, lưu trữ các thành phố dưới dạng đối tượng Jason trong biến JavaScript và sau đó sử dụng jquery để lặp qua biến JavaScript và xây dựng danh sách trẻ em.

Ai đó có thể cho tôi phản hồi về phương thức họ đã sử dụng không? Tôi không tin rằng kéo hàng ngàn bản ghi vào trình duyệt và lưu trữ trên máy khách là rất hiệu quả khi chúng tôi chỉ có thể hiển thị 10 bản ghi. Nhà phát triển này cũng tin rằng lặp qua một đối tượng JSON hàng 10000 trong JavaScript nhanh hơn thực hiện cuộc gọi cơ sở dữ liệu để lấy 10 hàng.

+1

Tôi nghiêng về phía * không * mang quá nhiều dữ liệu bị lãng phí cho khách hàng. Một trình duyệt máy tính để bàn có thể sẽ xử lý trơn tru, nhưng nó lãng phí băng thông nếu không có gì khác. Đối với dữ liệu thay đổi từ từ như thành phố, bạn có thể tận dụng nhiều bộ nhớ đệm và loại bỏ lưu lượng truy cập cơ sở dữ liệu. –

+0

Tôi đồng ý với OP và với 'Tim medora', nếu bạn không phải lấy tất cả dữ liệu bằng một lần lặp, bạn không cần phải đẩy 10000 hàng sang JSON. Nó sẽ không hiệu quả. NHƯNG nếu bạn vẫn nhận được toàn bộ 10000 hàng theo yêu cầu AJAX, việc đẩy dữ liệu vào trình duyệt sẽ hiệu quả hơn. – Maris

+0

Cảm ơn phản hồi. Tôi muốn cache dữ liệu và giảm số lượng các cuộc gọi cơ sở dữ liệu. Tôi nghĩ đây sẽ là một thỏa hiệp tốt. Tôi thực sự không tin rằng việc lưu trữ 100 hoặc 1000 đối tượng JSON trong biến js là cần thiết –

Trả lời

1

Tạo danh sách của bạn và bạn có thể gọi mọi thứ từ LINQ. Kiểm tra bộ nhớ cache để tạo từ đó trước khi bạn thực hiện các cuộc gọi khác để thực hiện

public IList<Example> GetList(string _state) 
{ 

    IList<Example> cities = new List<Example>(); 

    Cache cache = HttpContext.Current.Cache; 

    if (cache[_state] != null) 
     cities = (IList<Example>)cache[_state]; 

    else 
    { 
     //Do your calls 
     cache.Insert(_state, cities); 
    } 

    return cities; 
} 
+0

Ví dụ tốt nhờ Sam –

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