2017-09-07 2 views
0

Je travaille sur un projet en .NET MVC5 en utilisant la première approche de code, j'ai créé une table de base de données et je veux récupérer quelques enregistrements spécifiques dans deux parties différentes (catégories de base de données) de la page Index ou (Home Page) table de base de données.Comment récupérer des données pour deux parties différentes d'une même page Web à l'aide de LINQ à partir de la même table de base de données?

J'ai créé le contrôleur ci-dessous qui fonctionne bien pour l'une des parties nommées «Événements récents» mais je suis perplexe lorsque j'essaie de récupérer des enregistrements pour la deuxième partie de la page d'accueil. en utilisant le même contrôleur? Au début, je veux juste que la logique fonctionne bien pour les deux parties, mais dans le cas où un expert est en train de lire mon message, Puis aussi me dire comment puis-je récupérer un nombre spécifique d'enregistrements que je récupère 8 enregistrements dans les événements récents, et si je veux récupérer 12 enregistrements dans la section Événements en vedette?

C'est le contrôleur:

public ActionResult Index() 
{ 
    var result = (from i in _context.consult 
        orderby i.date_of_event descending 
        where i.category == "recent_events" 
        select i).Take(8); 
    return View(result); 
} 

Juste pour plus de précisions: Dans la vue que j'utilise la boucle foreach pour récupérer des données: A titre d'exemple, il ressemble à ceci:

@model Ienumurable <Example.Models.consultation> 

CODE ÉVÉNEMENTS RÉCENTS PORTION

@foreach (var recent in Model) 
{ 
    if (@recent.category == "recent_events") 
    { 
     <p>@recent.date</p> 
     <p>@recent.details</p> 
    } 
} 

CO DE POUR LES ÉVÉNEMENTS EN VEDETTE PORTION

@foreach (var featured in Model) 
{ 
    if (@featured.category == "featured_events") 
    { 
     <p>@featured.date</p> 
     <p>@featured.details</p> 
    } 
} 

Je serais très heureux si quelqu'un pouvait m'aider à cet égard.

Répondre

1

En supposant que vous ayez deux listes d'éléments que vous souhaitez renvoyer, créez une nouvelle classe en conservant les deux listes en tant que propriétés publiques, remplissez les deux dans le contrôleur et renvoyez la nouvelle classe.

Votre modèle contiendra maintenant les deux et vous pourrez parcourir les deux en utilisant Razor.

exemple:

public class EventsDataModel 
{ 
    public List<Event> RecentEvents { get;set; } 
    public List<Event> FeaturedEvents { get;set; } 

    public EventsDataModel() 
    { 
      RecentEvents = new List<Event>(); 
      FeaturedEvents = new List<Event>(); 
    } 
} 

votre contrôleur Remplit maintenant à la fois:

public ActionResult Index() 

    { 
     var result = new EventsDataModel(); 

     result.RecentEvents = (from i in _context.consult 
         orderby i.date_of_event descending 
         where i.category == "recent_events" 
         select i).Take(8); 
     result.FeaturedEvetns = whatever 
      return View(result); 


     } 
+0

Cher Andrei Dragotoniu, j'apprécie vraiment votre réponse. Mais utiliser deux listes signifie avoir deux classes différentes, ce qui signifie en plus avoir deux tables séparées dans la base de données. Cela créerait une redondance dans la phase de saisie des données car les deux sections partagent les mêmes données mais avec la seule différence de temps et de popularité. Cela signifie que si la date est récente, elle ira à la section récente et si elle est définie sur oui dans la table de base de données, elle ira à la section sélectionnée où le reste des données comme l'en-tête et la description complète restera identique pour les deux sections . – Ahmad

+0

Et depuis que j'ai passé un long moment à travailler sur cette logique, je pense qu'il me manque quelque chose dans la partie LINQ et cela peut être corrigé en élaborant la requête LINQ, qu'en pensez-vous? Quoi qu'il en soit, merci encore une fois pour votre aimable réponse. – Ahmad

+0

De toute façon aujourd'hui, j'ai été en mesure de résoudre le problème en utilisant votre logique, j'ai légèrement modifié la conception de la base de données via des classes dans le répertoire Models, puis appliqué votre logique. Encore une fois merci beaucoup monsieur, j'apprécie vraiment votre aimable coopération. – Ahmad