Asp.net mvc 是否可以使HtmlHelper扩展方法仅对那些具有特定类型的视图可用

Asp.net mvc 是否可以使HtmlHelper扩展方法仅对那些具有特定类型的视图可用,asp.net-mvc,extension-methods,html-helper,generic-method,Asp.net Mvc,Extension Methods,Html Helper,Generic Method,我正在尝试为IEnumerable集合实现自己的分页。所以,我有一门课叫PagedList。我已经完成了类本身,我只需要编写一个HtmlHelper扩展方法来呈现实际页面。这将是最简单的方法(至少我能想到): public静态MvcHtmlString分页(此HtmlHelper,字符串url){ //在这里做事 返回新的MvcHtmlString(“Hi”); } 但是,是否可以仅在强类型为PagedList的视图中使用此方法?您可以启用此方法,以便只能在特定类型上调用它,例如,IEnume

我正在尝试为IEnumerable集合实现自己的分页。所以,我有一门课叫PagedList。我已经完成了类本身,我只需要编写一个HtmlHelper扩展方法来呈现实际页面。这将是最简单的方法(至少我能想到):

public静态MvcHtmlString分页(此HtmlHelper,字符串url){
//在这里做事
返回新的MvcHtmlString(“Hi”);
}
但是,是否可以仅在强类型为PagedList的视图中使用此方法?

您可以启用此方法,以便只能在特定类型上调用它,例如,
IEnumerable
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");
}
public static MvcHtmlString Paginate(此HtmlHelper,字符串url),其中TModel:IEnmerable{
//在这里做事
返回新的MvcHtmlString(“Hi”);
}

虽然@Ehsan Sajjad的答案是正确的,但我找到了一种更简洁的方法来实现这一点:

public static MvcHtmlString Paginate<T>(this HtmlHelper<PagedList<T>> helper,string url){
    .......
}
public static MvcHtmlString Paginate(此HtmlHelper帮助程序,字符串url){
.......
}

我试过了,真的很管用。但可能还有其他一些我目前无法想到的含义,因此欢迎任何评论或更正。

从我在谷歌上找到的内容来看,这是可能的,是的,但我还没有看到任何确认的代码片段。
public static MvcHtmlString Paginate<T>(this HtmlHelper<PagedList<T>> helper,string url){
    .......
}