Comment faire la pagination et le filtrage dans les applications MVC
-
05-07-2019 - |
Question
J'ai le même problème que celui-ci post mais la réponse fait pas travailler .... Pas de surcharge pour la méthode 'Pager' prend les arguments '4' Est-ce que j'utilise MVCContrib ou la réponse est obsolète?
mon code ressemble à ceci: dans le contrôleur
public ActionResult Index(int? clubid,int? page)
{
List<aspnet_Users> memberList = new List<aspnet_Users>();
IEnumerable enumerable;
if (!clubid.HasValue)
{
enumerable = aspnet_Users.Find(User.Identity.Name).Club != null ? aspnet_Users.FindAllByClubId(aspnet_Users.Find(User.Identity.Name).Club.Id) : aspnet_Users.FindAll();
}
else
{
if (clubid == 0)
{
enumerable = aspnet_Users.FindAll();
}
else
{
enumerable = aspnet_Users.FindAllByClubId(clubid.Value);
}
}
ViewData["clubid"] = clubid;
foreach (aspnet_Users member in enumerable)
{
memberList.Add(member);
}
return View(memberList.AsPagination(page ?? 1, 10));
}
en vue
<h2>Index</h2>
<% using (Html.BeginForm()) {
ArrayList clubs=new ArrayList();
clubs.Add(new Club(0, "Toate"));
clubs.AddRange(Club.FindAll());
%>
<%= Html.DropDownList("ClubId", new SelectList(clubs, "Id", "Name", (Model == null ? 0 : aspnet_Users.Find(Page.User.Identity.Name).Club != null ? aspnet_Users.Find(Page.User.Identity.Name).Club.Id : 0)))%>
<input type="submit" value="Filtreaza" />
<% } %>
<table>
<tr>
<th>Action</th>
<th>
UserName
</th>
<th>
Club
</th>
.....
<%=Html.Encode(item.Male?"Male":"Female")%>
</td>
<td>
<%=Html.Encode(item.BirthDay.HasValue?item.BirthDay.Value.ToString(ConfigurationManager.AppSettings["DateFormat"], CultureInfo.InvariantCulture):"")%>
</td>
</tr>
<% }%>
</table> <%= Html.Pager(Model)%>
si je filtre le résultat en changeant le clubid avec la liste déroulante, la valeur sélectionnée n'est pas transmise aux pages suivantes ...
le lien de page suivant est Membres / Index? page = 2 et je veux Membres / Index? clubid = 1 & et; page = 2
j'ai essayé avec <% = Html.Pager (ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new {categoryname = ViewData [" clubid "]})% > mais je reçois des erreurs de compilation
Pas de surcharge pour la méthode 'Pager' '4' arguments
J'ai vérifié et j'ai la dernière version de og mvccontrib (1.0.0.916)
La solution
Vous ne savez pas exactement ce que vous essayez de faire - vous pourriez peut-être poster du code.
Cela dit, les fichiers binaires MvcContrib disponibles auprès de CodePlex sont plutôt obsolètes. Plus précisément, il existe un modèle de grille et de pagination très amélioré. Vous devriez récupérer la dernière version de GitHub et créer votre propre copie.