title: Is there an MVC Pager that uses POST instead of GET?
body: <p>Here is my issue.  I have a <code>SearchViewModel</code> that has a large number of search criteria, the values simply won't fit in the URL.  I'm currently using <code>Troy Goode's Html.PagedListPager</code>, but it is designed to use <code>Url.Action()</code> to send the parameters in the URL.  Here is an example.  I don't think client-side filtering is an option, due to the fact I'll have a lot of records.</p>
  <pre><code> @Html.PagedListPager(
          (IPagedList)@Model.SearchResults,
          page =&gt; Url.Action(&quot;Results&quot;, 
              new {
                  YearBuiltFrom = Model.YearBuiltFrom,
              }
                  ))
  }
  </code></pre>
  <p>This is a fine solution if you only have one or two simple parameters.</p>
  <h3>SearchViewModel</h3>
  <pre><code>  public class SearchViewModel
      {
  
          public int? page { get; set; }
          public int? size { get; set; }
  
          [IgnoreDataMember]
          public IPagedList&lt;Property&gt; SearchResults { get; set; }
  
          public string[] Locations { get; set; }
  
          [IgnoreDataMember]
          public MultiSelectList LocationOptions { get; set; }
          
          
          public string[] ZipCodes { get; set; }
  
          [IgnoreDataMember]
          public MultiSelectList ZipCodeOptions { get; set; }
  
  
          [Display(Name=&quot;Year Built&quot;)]
          public int? YearBuiltFrom  { get; set; }
       
          [Display(Name = &quot;Year Built&quot;)]
          public int? YearBuiltTo { get; set; }
          public int? SqftFrom { get; set; }
          public int? SqftTo { get; set; }
          public string Bedrooms { get; set; }
          public string Bathrooms { get; set; }
          [DataType(DataType.Date)]
          public DateTime? SalesFrom { get; set; }
          [DataType(DataType.Date)]
          public DateTime? SalesTo { get; set; }
          public int? SaleAmountFrom { get; set; }
          public int? SaleAmountTo { get; set; }
          public int? LandAreaFrom { get; set; }
          public int? LandAreaTo { get; set; }
          
          public string[] Waterfront { get; set; }
  
          [IgnoreDataMember]
          public MultiSelectList WaterfrontOptions { get; set; }
  
       
          
          //TODO: Implement LandAreaType as a search parameter
          //public string LandAreaType { get; set; }
          public Boolean? IsVacant { get; set; }
          
          public string[] PropertyFeatures { get; set; }
  
          [IgnoreDataMember]
          public MultiSelectList PropertyFeatureOptions { get; set; }
  
      }
  </code></pre>