Можно ли сделать метод расширения HtmlHelper доступным только для тех представлений определенного типа

Я пытаюсь реализовать свою собственную подкачку для IEnumerable коллекций. Итак, у меня есть класс с именем PagedList. Я закончил с самим классом, мне просто нужно написать метод расширения HtmlHelper, который будет отображать реальные страницы. Это был бы самый простой способ (по крайней мере, я могу думать):

public static MvcHtmlString Paginate<TModel>(this HtmlHelper<TModel>,string url){
      //do the stuff here
      return new MvcHtmlString("Hi");
}

Но возможно ли сделать этот метод доступным ТОЛЬКО в тех представлениях, которые строго типизированы в PagedList?

2 ответа

Хотя ответ @Ehsan Sajjad верен, я нашел более удобный способ сделать это:

public static MvcHtmlString Paginate<T>(this HtmlHelper<PagedList<T>> helper,string url){
    .......
}

Я пытался, и это действительно работает. Но могут быть некоторые другие последствия, о которых я не могу думать в данный момент, поэтому любые комментарии или исправления приветствуются.

Вы можете наложить ограничение на метод, чтобы его можно было вызывать только для определенных типов, например IEnumerable<PagedList>, PagedList<TModel> или же PagedList если вы хотите, это зависит от того, какой тип модели вы хотите, а также зависит от реализации вашего PagedList учебный класс:

public static MvcHtmlString Paginate<TModel>(this HtmlHelper<TModel> helper,string url) where TModel : IEnmerable<PagedList> {
  //do the stuff here
  return new MvcHtmlString("Hi");
}
Другие вопросы по тегам