На данный момент это скорее теоретический вопрос, но здесь все идет.Переопределить помощник html по умолчанию с расширением в MVC?
Короткая версия: Есть какой-то способ сделать свой собственный HTML помощник заменить стандартный HTML помощник (как EditBoxFor
), не выходя Заменить все маршрут (переопределяет помощник по умолчанию?) Или ограничить заменить все функции в VS на только мнения?
Длинная версия: Мы создали приложение MVC с множеством видов, но теперь наш клиент хочет, чтобы мы добавили функциональность, которая позволит ему изменять текст в приложении. Это связано с такими вещами, как ярлыки для входов, заполнители и некоторые такие. Я уже написал свою собственную замену помощника html для EditBoxFor
(в ее сердце все еще используется и EditBoxFor
), который загружает местозаполнитель и т. Д. Из базы данных помещает его в кеш и так далее. Я назвал его (ах так умно) EditBoxFor2
, и он принимает те же самые входы, что и EditBoxFor
, поэтому я могу просто добавить 2
к имени помощника и поддерживает эту новую текстовую функциональность. EditBoxFor
используется в системе много раз, и это не единственный помощник html, который мы модифицируем. Я мог бы, вероятно, заменить все EditBoxFor
EditBoxFor
(или еще лучше Html.EditBoxFor(
с Html.EditBoxFor2(
) вместо того, чтобы сменить несколько тысяч строк кода вручную, но очень вероятно, что я разорву некоторые виды \ контроллеров \ других помощников таким образом (я мог бы забыли реализовать несколько вариантов EditBoxFor
в моем Html.EditBoxFor2
). Поэтому мне было интересно, есть ли способ переопределить (как в том же имени и тех же входных параметрах) по умолчанию помощники с моим собственным?
Для этого нет хорошего способа, и для этого есть причина. Даже если вы сейчас единственный разработчик, работающий над этим, это может быть не всегда так. Вы можете отправиться на более зеленые пастбища, или ваша организация может привлечь кого-то еще. Переопределение подобных вещей служит только для создания путаницы в вашей кодовой базе. Используя другой, называемый помощник, вы даете понять, что он * * отличается. –
Наверняка это решение должно быть оставлено до команды разработчиков? Как это отличается от переопределения любого другого типа поведения по умолчанию, такого как «ModelMetadataProviders» или даже глобальные фильтры действий? –