Bonjour,
Je rencontre actuellement un problème assez énervant, malheureusement je n'arrive pas à le debug.
J'explique:
J'ai ajouté un nouveau champ dans ma page cshtml, qui doit faire le même affichage que les autres cas seulement la lorsque je tape dans mon champs le numéro de l'ID de des campagnes (il peut y avoir 1 ID pour plusieurs clients), il faut qu'il me l'affiche.
Actuellement, j'utilise une liste pour l'affichage générale des campagnes, qui prend "All", "accepted"..., je veux trier par ID maintenant, mais lorsque j'utilise une TextBoxFor, au moment de la compilation j'ai toujours une erreur dans mon foreach de mon cstml dans le ViewBag, j'arrive pas à comprendre j'ai eu beau fouillé mon code des centaines de fois j'ai l'impression que mon ViewBag n'arrive pas à stocker quand ce n'est pas une liste que j'envoie!
Voici les quelques gestions que j'ai fait :
(ce cas me permet de gérer si l'ID == 0 il prend en compte que l'affichage de base qu'il fait avec sa liste, sinon il rentre dans un autre élément du controller)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (model.CampaignID == 0) { this.ViewBag.AffiliateOffers = affiliateOfferApplicationsLogic.GetLastestAffiliateOffers(model.FilterID); } else { this.ViewBag.AffiliateOffers = affiliateOfferApplicationsLogic.GetAffiliateOffersByCampaignID(model.CampaignID); } }
Les controllers:
(Celui-ci fonctionne parfaitement, pas besoin de le toucher)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public List<affiliateOfferApplications> GetLastestAffiliateOffers(int statusID, int limit = LASTEST_OFFERS_LIMIT) { return (from u in context.affiliateOfferApplications where u.ApprovalStatus == statusID || statusID == -1 select u).OrderByDescending(u => u.ID).Take(limit).ToList(); }
(Celui avec qui je retrouve des soucis, pourtant je récupère bien le bon ID qui est rentré dans ma case)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public campaigns GetAffiliateOffersByCampaignID(int campaignID) { return (from u in context.affiliateOfferApplications where u.CampaignID == campaignID select u).FirstOrDefault<affiliateOfferApplications>(); }
Puis pour finir mon cshtml:
J'ai coupé des parties mais je pense que c'est suffisant, Microsoft Visual Studio passe tous les breakpoint mais bloque seulement au cshtml dans la ligne du foreach... L'erreur que j'ai c'est "'System.Collections.IEnumerable" quelque chose du genre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @foreach (affiliateOfferApplications offer in this.ViewBag.AffiliateOffers) { <tr style="height: 65px"> <td style="padding-right: 5px; text-align: left">@offer.ID</td> <td style="padding-right: 5px; text-align: left">@offer.publishers.Email (@offer.PublisherID)</td> <td style="padding-right: 5px; text-align: left">@offer.campaigns.PublicName (@offer.campaigns.ID)</td> <td style="padding-right: 5px; text-align: left"> @using (Html.BeginForm()) { @Html.HiddenFor(m => m.FilterID) @Html.DropDownList("offerStatus", ((CommonController)this.ViewContext.Controller).GetAffiliateOfferApplicationStatusesList(offer.ApprovalStatus), new { @class = "formShort" }) <button type="submit" name="OfferID" value="@offer.ID" class="orangeButton">Update</button> }
Si besoin d'information complémentaire je suis la! Je suis sur que c'est une simple erreur mais j'arrive pas à le trouver que c'est stressant
Je vous remercie d'avance!
Partager