2017-03-28 1 views
1

J'ai un système de mission dans MVC. et je donne une même mission ou mission différente pour beaucoup d'utilisateurs. et je montre le titre, la description, la date de début, la date de fin et qui est/est en mission. Ceux-ci montrent la page de vue dans grid.mvc. mais quand je me connecte je peux voir chaque mission. Je ne veux pas à chaque mission que je veux juste voir seulement ma mission. Bien sûr, les autres utilisateurs voient leurs missions.comment sélectionner le travail affecté à l'utilisateur?

Dans mon contrôleur, je divise les noms.

ceci est mes codes,

Controller:

TicketDbContext db = new TicketDbContext(); 

    public ActionResult Index() 
    {  


     var result = db.Missions.OrderByDescending(x=>x.GivenDate).ToList(); 

     string ad = string.Empty; 
     foreach (var item in result) 
     { 
      if (!string.IsNullOrEmpty(item.GivenUsers)) 
      { 
       string[] Ids = item.GivenUsers.Split(','); 

       for (int i = 0; i < Ids.Length; i++) 
       { 
        int id = Convert.ToInt32(Ids[i]); 
        item.GivenUsers += db.Users.FirstOrDefault(x => x.Id == id).Name+ " " + db.Users.FirstOrDefault(x => x.Id == id).Surname+ ","; 
       } 
      }    

     } 

     return View(result); 

    } 

ScreenShot de ma grille

enter image description here

+0

Qu'avez-vous déjà essayé? – NotTelling

+0

lors de la connexion de l'utilisateur, j'ai essayé attraper en session. mais je n'ai pas. –

Répondre

1

tout d'abord, je vous recommande de garder les utilisateurs affectés ids dans le tableau séparé

Ceci est peut-être votre affaire ..

var currentUserId = "";// set current userId from Where are you holding (session,identity etc..) 
var result = db.Missions.OrderByDescending(x=>x.GivenDate).ToList(); 
result = result.Where(x=> x.GivenUsers.Split(',').Contains(currentUserId)); 
    foreach (var item in result) 
    { 
     if (!string.IsNullOrEmpty(item.GivenUsers)) 
     { 
      int[] Ids = Array.ConvertAll(item.GivenUsers.Split(','), 
             delegate(string s) { return int.Parse(s); }) ; 
      string[] names = db.Users.Where(u => Ids.Contains(u.Id)).Select(u => u.Name+ " " + u.Surname).ToArray(); 
      item.GivenUsers = string.Join(",",names); 

     }    

    } 
+0

J'ai une erreur. var currentUserId = this.Session.SessionID; // définir l'ID utilisateur actuel de Où êtes-vous en attente (session, identité, etc.) var résultat = db.Gorevs.OrderByDescending (x => x.VerildigiTarih) .ToList() ; Resultat = db.Gorevs.Where (x => x.GoreviAlanUye.Split (','). Contient (currentUserId)); // dans cette ligne. le programme dit Impossible de convertir implicitement le type 'System.Linq.IQueryable ' en 'System.Collections.Generic.List '. Une conversion explicite existe (manque-t-il une distribution?) –

+0

Désolé, j'ai changé 'result = db.Gorevs.Where (x => x.GoreviAlanUye.Split (','). Contient (currentUserId));' à 'résultat = result .Where (x => x.GoreviAlanUye.Split (','). Contient (currentUserId)); 'sur réponse. – levent

+0

même erreur. "Impossible de convertir implicitement le type 'System.Linq.IQueryable ' en 'System.Collections.Generic.List '. Une conversion explicite existe (manque-t-il une distribution?" Si Je mets la fin de la ligne "ToList()" le programme fonctionne mais ma page d'affichage ne montre rien La grille est vide –