ASP.NET MVC - Jak uzyskać kontrolki użytkownika wielokrotnego użytku i utrzymać DRY?

Pierwszy post, więc bądź łagodny :)

Podczas tworzenia formantów użytkownika w ASP.NET MVC, jaki jest najlepszy sposób na strukturę kodu, tak aby kontrolery, które wywołują widoki korzystające z elementów sterujących użytkownika, nie musiały tak wiele wiedzieć o formantach? Chciałbym poznać dobry sposób na utrzymanie DRY podczas korzystania z kontroli użytkownika w ASP.NET MVC.

Pamiętaj, że to pytanie dotyczy tylko elementów sterujących użytkownika, które wymagają specjalnej obsługi i logiki w przypadku odsyłania. Nie mam problemu z tworzeniem ładnego kodu DRY dla kontrolek użytkownika, które są tylko widokiem (przy użyciu RenderPartial) lub wymagają wstępnego przetwarzania w celu utworzenia odpowiedniego ViewModel (przy użyciu RenderAction).

To pytanie dotyczy tylko uzyskania kontrolek wielokrotnego użytku w aplikacji. Nie martwię się o możliwość ponownego wykorzystania aplikacji w tym momencie.

Aby podać konkretny przykład, powiedzmy, że chciałbym utworzyć formant użytkownika „Szybkie dodawanie”, który zawiera trzy pola wprowadzania, imię, nazwisko i nazwę firmy oraz przycisk przesyłania. Gdy używana jest funkcja QuickAdd, następujące kroki należy wykonać niezależnie od strony, na której znajduje się formant:

Sprawdź, czy pola nie są puste, jeśli są, pokaż wskaźnik.Wykonaj wyszukiwanie w repozytorium, aby sprawdzić, czy firma już istnieje, jeśli nie; Stwórz To.Utwórz nowy kontakt powiązany z istniejącą firmą lub nowo utworzoną firmąPonownie renderuj istniejącą stronę. Jeśli nie wystąpią błędy sprawdzania poprawności, użytkownik ponownie zobaczy dokładnie tę samą stronę, w przeciwnym razie ta sama strona z błędami sprawdzania poprawności.

Mój główny problem z osiągnięciem DRY polega na tym, że wszystkie kontrolery, które wywołują widoki zawierające częściowy widok, muszą mieć metodę działania, aby przetworzyć przesłanie formularza z szybkiego dodawania. Nawet jeśli wybiję logikę przetwarzania informacji w oddzielnym kontrolerze i wywołam tę metodę z każdego z pozostałych kontrolerów, wydaje się to być ciężarem, który każdy kontroler, który wywołuje widoki z kontrolkami wielokrotnego użytku, musi mieć tę wiedzę.

Inną opcją, którą przyjrzałem się, było sprawienie, aby formant wielokrotnego użytku był zawsze poddawany konkretnej metodzie / kontrolerowi akcji, ale wtedy nie ma możliwości, aby kontroler wiedział, jak ponownie wypełnić model odpowiednio dla określonego kontrolera, który wywołał widok, który zawierał kontrolka wielokrotnego użytku (w kroku 4).

Wiem, że w MVC 2 mówi się o kontrolerach podrzędnych (z tego pytaniaASP.NET MVC - Zawarte elementy sterujące użytkownika) ale skoro nie ma go jeszcze, jaki jest najlepszy sposób na ustrukturyzowanie kodu w celu osiągnięcia maksymalnej możliwości ponownego użycia przy zachowaniu DRY?

Czy istnieje alternatywa dla konieczności posiadania wszystkich kontrolerów, które wywołują widoki, które używają kontrolki wielokrotnego użytku (z cechami opisanego powyżej), konieczności posiadania metody działania w celu przetworzenia informacji z kontrolki?

questionAnswers(3)

yourAnswerToTheQuestion