Tôi hiện đang sử dụng ASP.NT MVC RC1 để triển khai ứng dụng timesheet cơ bản. Tôi muốn tuân theo các nguyên tắc DRY nhưng thấy khó khăn trong một trường hợp cụ thể:Làm thế nào để giữ DRY khi logic cần triển khai C# và Javascript?
Một trong các chế độ xem của tôi, có một số hộp văn bản biểu thị số giờ dành cho một tác vụ cụ thể, hộp văn bản mỗi ngày trong tuần. Khi tôi tải trang ban đầu, tôi muốn một hộp văn bản trong chế độ xem hiển thị tổng số giờ đó. Ngoài ra, tôi muốn tổng số đó cập nhật khi tôi thay đổi các giá trị trong hộp văn bản. Bản cập nhật cho các hộp văn bản không gây ra một postback đầy đủ, chỉ có một postback AJAX mà không làm bất cứ điều gì với các kết quả (postback cập nhật giá trị trên DB nhưng trả về ActionResult là một EmptyResult vì không có gì tôi cần phải cập nhật trên Giao diện người dùng).
Hiện tại tôi có bộ điều khiển tạo chế độ xem được điền bằng "tổng" cho chế độ xem đó, do đó, logic bổ sung tất cả các giá trị nằm trong bộ điều khiển C#. Về phía giao diện người dùng, tôi có javascript cập nhật tổng số trên cấp độ giao diện người dùng. Nhưng điều này là không tốt bởi vì nếu tôi thay đổi logic đằng sau cách tính tổng số đó, tôi phải thay đổi nó ở hai nơi! AHH! KHÔNG KHÔ!
Vì vậy, làm cách nào tôi có thể thực hiện việc này? Câu trả lời duy nhất mà đến với tôi cho đến nay là để phế liệu mã javascript tính toán tổng số trên giao diện người dùng và thay vào đó có postback AJAX trả lại "tổng" mới cho xem đó.
Có cách tiếp cận nào khác không?
Nó * là * nguyên tắc hướng dẫn, không phải là luật. Nếu bạn cần logic cả hai nơi, và nó không phải là khả thi về mặt kỹ thuật để chia sẻ cùng một triển khai, thì bạn sẽ phải thực hiện nó hai lần. Thật may mắn, đó là cuộc sống. ;) – jalf
@jalf: chính xác. Một (bất kỳ) hướng dẫn không phải là một định luật không thể phá vỡ của sự tồn tại. – Richard
OK, đã lưu ý và thay đổi;) –