2013-03-07 25 views
7

Jesteśmy w trakcie przenoszenia naszej aplikacji do .NET. Jednym z głównych celów jest umożliwienie modyfikacji aplikacji, dla każdego klienta, ale nie dla kodu źródłowego. Rozwiązaliśmy to w rdzennym środowisku programując interfejsy i używając narzędzia Resolver zależności (z opcją zastąpienia rejestracji podstawowej) i MEF.Rozszerzalność widoków ASP.NET MVC w czasie wykonywania

Jeśli chodzi o widoki (interfejs użytkownika widzi), szablony wydają się statyczne i jeśli klient chce dodać nowe pole do ekranu, wydaje się, że musiałby zmodyfikować sam widok.

Jedyne dwie rzeczy, które mogę wymyślić to modyfikacja ścieżki wyszukiwania w viewengine. Umożliwiłoby to skopiowanie bazy i zmiany w niej zostałyby podjęte. Nie bardzo to lubię, ponieważ jest to kopia kodu.

Innym sposobem, jaki robimy teraz, jest stworzenie klasy, która jest kontenerem dla innych obiektów, które generują HTML. Zasadniczo mamy obiekt PageObject, LabelObject, InputObject..ect, który możemy nazwać renderowaniem i wyjściowym HTML. Ponieważ są to klasy, możemy zastosować tę samą metodologię, co w pozostałej części aplikacji nadawania wycinka w punktach. Idąc tą trasą naprawdę nie używamy viewengine do renderowania, ale tylko do łączenia wszystkich częściowych widoków. Wydaje się trochę przylegający.

Czy istnieje inny sposób osiągnięcia tego celu lub inny widok, którego mogę użyć, aby osiągnąć cel, jakim jest dostosowanie klientów bez dotykania widoku podstawowego? Wiem, że HTML nie jest obiektem, ale wydaje się, że musi istnieć coś pomiędzy ASP.NET WebForms a ASP.NET MVC, kiedy mamy do czynienia z HTML i pozwalamy na dostosowywanie.

Odpowiedz

2

Utworziłbym mocno napisany widok częściowy lub szablon (DisplayTemplate lub EditorTemplate na podstawie wymagań), którego @model jest zbiorem rzeczy, które są renderowane jako dane wejściowe i etykiety. Pozwól klientowi dodawać/usuwać elementy z utrwalonej kolekcji (tj. W bazie danych), a twój problem jest rozwiązywany za pomocą wbudowanego narzędzia ViewEngine.

+0

Jak mogę sprawić, by strona wyglądała ładnie? Nie uważam osobiście, że wygląd lub edycja są ładne. Mogłabym użyć bazy danych do sterowania wyświetlaczem, ale znowu nie byłabym w stanie używać tego widoku. – CharlesNRice

+0

Zależy od tego, co Twoim zdaniem jest _nice_. Możesz używać stylów CSS do stylu, jak chcesz. – jrummell

Powiązane problemy