Пользовательский HtmlHelper с той же сигнатурой метода, что и в версии System.Web.Mvc - неоднозначный вызов - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть слегка настроенная версия LabelFor () Html Helper, найденная в источниках MVC2. Когда я использую его в представлении, я получаю ошибку «Неоднозначный вызов», которая имеет смысл, учитывая, что my также сохраняет подпись оригинала.

LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, 
                         Expression<Func<TModel, TValue>> expression)

Есть ли способ настроить использование / импорт псевдонима в представлении?

Редактировать: К сожалению это предполагает, что это невозможно. Похоже, создание методов расширения с одинаковыми именами и сигнатурами методов в целом работает , но, очевидно, не в шаблонах aspx.

1 Ответ

0 голосов
/ 17 февраля 2011

Вы не можете сделать это, потому что нет никакого механизма, влияющего на разрешение метода расширения, кроме как через типы цели и параметры, участвующие в разрешении.В этом случае вам придется прибегнуть к поиску и замене.

Альтернативой может быть определение вашего собственного базового типа страницы, который перезаписывает свойство Html, чтобы возвращать ваш собственный производный HtmlHelper, и основывать расширение на этом.Но это кажется еще более хакерским.

...