Czy można wstrzyknąć klasę css do elementu HTML, który został zamknięty w ramach MvcHtmlString
?Jak wstrzyknąć klasę css do MvcHtmlString?
Mam za zadanie, w ramach ram buduję, z tworzeniem własnych wersje metod rozszerzenie MVC dla elementów formularza (TextBox
, TextBoxFor<>
, etc), z następującymi zastrzeżeniami:
- , że muszą utworzyć poprawny znacznik HTML, w tym klasy CSS, aby dopasować style, które zostały już zaprojektowane dla witryny. W większości przypadków oznacza to po prostu dodanie określonej klasy.
- , że muszą one być tak naprawdę do metod rozszerzenie MVC, jak to możliwe, tak, że deweloperzy czują się komfortowo używając ich
Większość, jeśli nie wszystkie, z rozszerzeniem MVC metody zwracają MvcHtmlString
więc najprostszy sposób naśladować Funkcją jest wywoływanie tych metod bezpośrednio z moich metod. Mam własny Html Helper, OuHelper
, że mój framework używa, więc deweloperzy, którzy chcą tworzyć, na przykład, TextBox
, nazwałbym coś wzdłuż linii:
`@ Ou.TextBoxFor (m => m.Username)
i chciałbym wynikowy HTML do renderowania tak:
<input type="text" name="Username" id="Username" class="int-text" />
Jeśli tworzę własne wersje przeciążeń, ponieważ są one w strukturze MVC, będę w stanie kontrolować dodawanie dodatkowych klas CSS tam, gdzie jest to potrzebne, ale to wydaje się przesadą dla tak małej zmiany wyjścia HTML z tych metod. Musiałbym zapewnić równoważne implementacje wszystkich przeciążeń (tylko dla TextBox
jest około 12, gdy policzymy wersje ogólne i nietypowe). To, co chciałbym zrobić, to TagBuilder
w odwrotnej kolejności (zacznij od wyjścia i stwórz z niego obiekt, który umożliwi dostęp do rzeczy takich jak MergeAttributes
), ale nie sądzę, że to możliwe.
Aby było jasne: kod strukturalny, który piszę, musi dodawać same klasy css, ale powinno być możliwe, że programiści używający metod rozszerzeń, które utworzę, dodadzą również własne niestandardowe klasy css. Zostaną one dodane/dołączane zgodnie z funkcjonalnością standardowego MVC metod forma ramy rozszerzeniem
Pozdrawiam Daniela - tak, wygląda na to, że zrobię coś w tym stylu. Miałem nadzieję, że nie będę musiał tworzyć zbyt wielu przeciążeń, ale muszę zapewnić taki sam poziom elastyczności, jaki zapewnia obecnie struktura MVC. Będę tworzył pewne metody rozszerzania i łączył klasę z atrybutami html zgodnie z wymaganiami (aby programiści używający mojej frameworka mogli dodawać własne klasy niestandardowe, jeśli będą tego potrzebować) – levelnis