Ứng dụng MVC của tôi có xu hướng có nhiều cuộc gọi ajax (thông qua JQuery.get()). Đó là loại bugging tôi rằng bộ điều khiển của tôi là rải rác với nhiều phương pháp nhỏ mà được gọi là thông qua ajax. Dường như với tôi là loại phá vỡ mô hình MVC một chút - bộ điều khiển hiện đang trở thành một thành phần truy cập dữ liệu nhiều hơn sau đó là một bộ định tuyến URI.Mẫu điều khiển ASP MVC Ajax?
Tôi đã được cấu trúc lại để tôi có bộ điều khiển 'true' của mình cho một trang chỉ thực hiện các phản hồi định tuyến tiêu chuẩn (truy xuất các đối tượng ActionResponse). Vì vậy, một cuộc gọi đến/home/rõ ràng sẽ khởi động lớp HomeController mà sẽ trả lời trong thời trang điều khiển kinh điển bằng cách trả về một khung nhìn đơn giản.
Sau đó, tôi đã chuyển nội dung ajax của mình vào một lớp điều khiển mới có tên tôi đang mở đầu bằng 'Ajax'. Vì vậy, ví dụ: trang của tôi có thể có ba phần chức năng khác nhau (nói giỏ hàng hoặc tài khoản người dùng). Tôi có một bộ điều khiển ajax cho mỗi điều này (AjaxCartController, AjaxAccountController). Có thực sự không có gì khác nhau về việc di chuyển các công cụ gọi ajax vào lớp điều khiển riêng của nó - nó chỉ là để giữ cho mọi thứ sạch hơn. về phía khách hàng rõ ràng là sau đó JQuery sẽ sử dụng bộ điều khiển mới này:
//jquery pseudocode call to specific controller that just handles ajax calls
$.get('AjaxAccount/Details'....
(1) có mô hình nào tốt hơn trong MVC để trả lời các cuộc gọi ajax không?
(2) Dường như với tôi rằng mô hình MVC hơi bị rò rỉ khi nói đến ajax - nó không thực sự 'kiểm soát' công cụ. Nó chỉ xảy ra là cách tốt nhất và ít đau đớn nhất để xử lý các cuộc gọi ajax (hoặc tôi không biết gì)?
Nói cách khác, sự trừu tượng 'Điều khiển' dường như không phù hợp với Ajax (ít nhất là từ phối cảnh mẫu). Có cái gì tôi đang mất tích?
Đồng ý với bạn - về cơ bản chúng tôi có hai loại quyền truy cập 'nội dung' trên web. Mô hình MVC xử lý một cách, và cách khác chúng ta không muốn nói về bởi vì nó không phù hợp với mô hình của chúng ta. Nhưng, ít nhất với tôi, vì ajax là một kỹ thuật hấp dẫn (và ứng dụng hiện tại của tôi gần như hoàn toàn được điều khiển thông qua ajax), mẫu MVC ưa thích thực sự bị phá vỡ và bị tấn công để phản hồi các cuộc gọi ajax (nó hoạt động tốt, tôi có thể thêm). Nó chỉ có vẻ như không có một câu chuyện rất tốt cho ajax trong thế giới MVC. –