Tôi đã xây dựng một ứng dụng ASP.NET MVC một thời gian trước đây, và sau một vài chu kỳ bảo trì, tôi tự hỏi liệu tôi có cách tiếp cận tốt nhất để quản lý nhà nước hay không. Mọi thứ đều hiệu quả, nhưng tôi có cảm giác có một cách tốt hơn.Quản lý nhà nước trong ASP.NET MVC
Trang web dựa trên chức năng tìm kiếm có khá nhiều tùy chọn. Người dùng bắt đầu sử dụng trang web bằng cách điền vào một số tùy chọn tìm kiếm trong biểu mẫu và nhấp vào nút 'tìm kiếm'. Nút này viết với phương pháp kiếm với tất cả các tùy chọn tìm kiếm được định nghĩa là thông số các phương pháp tìm kiếm, ví dụ:
public ActionResult Search(string param1, string param2, string param3, int? param3, long? param4)
Bây giờ các trang kết quả mà xuất hiện có một số liên kết trên nó, dẫn đến các trang chi tiết khác nhau vv vì tôi cần trạng thái tìm kiếm để được bảo tồn trên trang chi tiết, tôi thấy mình tạo ActionLinks với rất nhiều các thông số ở khắp mọi nơi, chẳng hạn như:
<%=Html.ActionLink("LinkText", "MethodName", new {id="idOfDetailPage", param1=Model.param1, param2=Model.param2, param3=Model.param3, param4=Model.param4}, null)%>
Hầu hết các giá trị tham số trong mỗi liên kết làm không thay đổi từ trạng thái hiện tại của tìm kiếm, nhưng tôi cần phải vượt qua chúng để có thể tạo các liên kết khác trong trang chi tiết bằng c ví dụ như các tham số tìm kiếm urrent, chẳng hạn như "quay lại kết quả tìm kiếm".
Khi tôi cần phải thêm một tham số tìm kiếm do yêu cầu tính năng mới, tôi thấy mình thay đổi rất nhiều liên kết cũng như bất kỳ phương pháp điều khiển rằng các liên kết dẫn đến. Đây là nơi tôi cảm thấy rằng tôi cần một cách tốt hơn.
Tôi đã nghĩ về việc sử dụng trạng thái phiên để giữ các tham số tìm kiếm, nhưng vì một số lý do nghĩ rằng đây không phải là điều tốt nhất để sử dụng trong ASP MVC và rất tò mò nếu có cách khác, sạch hơn để làm điều này.
Lưu ý: Tôi cũng đã cố gắng một cách tiếp cận mà tôi sử dụng một đối tượng mạnh mẽ gõ trong ActionLink nhưng tôi vẫn cần phải vượt qua các thông số để đối tượng đó để nó không trở nên tốt hơn nhiều.
Bất kỳ ý tưởng nào được đánh giá cao.
Điều này hoạt động miễn là tôi luôn chuyển các thông số tìm kiếm giống nhau và chỉ tham số tìm kiếm cho hành động ion, chẳng hạn như hành động tìm kiếm. Tuy nhiên tôi gặp rắc rối khi tôi cần truyền dữ liệu bổ sung cho hành động, chẳng hạn như ID của một mục (đối với trang chi tiết).Sau đó, tôi không thể đơn giản chuyển Mô hình đến phương thức trợ giúp Html.ActionLink. Ngoài ra, nhiều liên kết yêu cầu một trong các tham số tìm kiếm được thay đổi nhưng phần còn lại vẫn giữ nguyên, vì vậy với cách tiếp cận này, tôi cần tiếp tục tạo các đối tượng SearchParameters mới. Nó hoạt động nhưng nó bị lộn xộn sau một thời gian. –
Tôi sẽ gắn bó vào và gợi ý rằng tìm kiếm đánh dấu không phải lúc nào cũng là điều tốt để có thể làm - nó phụ thuộc vào bối cảnh và ứng dụng - điều này đặc biệt đúng nếu tìm kiếm có các phụ thuộc không bị lộ trong các tham số. Điều đó nói rằng tôi nghĩ rằng đây là một khái quát tốt (-: – Murph