2016-10-08 1 views
2

Ceci est mon code: Controller -liste Passing du contrôleur pour afficher les résultats de ne pas trouver un modèle/espace de noms en vue

DatabaseContext db = new DatabaseContext(); 
List<users> UsersToView = new List<users>(); 
UsersToView = db.users.ToList(); 

return View(UsersToView); 

Voir -

J'ai écrit ceci: @model List<UsersToView> Mais cela me donne une erreur:

Severity Code Description Project File Line Suppression State Error CS0246 The type or namespace name 'UsersToView' could not be found (are you missing a using directive or an assembly reference?)

Et je ne suis pas sûr de ce que je fais mal ici.

+0

@Div I 'ai essayé ceci '@model List ' mais je ne peux pas obtenir le .UsersToView supplémentaire – Harugawa

+0

@Div Il est seulement dans le contrôleur – Harugawa

+0

@Div est-ce un bon moyen tho?J'ai lu quelque part que ce n'est pas une balle ou quelque chose @ @ @ – Harugawa

Répondre

1

Je sais que les autres réponses peuvent résoudre votre problème, mais permettez-moi d'ajouter une description rapide à propos du problème lui-même:

I wrote this: @model List<UsersToView> But this gives me an error

La raison pour laquelle vous obtenez une erreur sur cette ligne de code est parce que lorsque vous écrivez @model le compilateur attend que ce qui suit est un type de données. Ainsi, vous déclarez spécifiquement quel type de données votre modèle doit avoir. Bien que la déclaration soit correcte, excepté la chose que UsersToView n'est pas un type, mais c'est une variable locale déclarée dans le contrôleur, donc la vue ne peut même pas la voir, et essaie de l'interpréter comme un type inconnu dans un List<UsersToView>. Fondamentalement, que dites-vous maintenant, c'est que votre modèle est une liste de types inconnus.

C'est pourquoi le compilateur dit:

The type or namespace name 'UsersToView' could not be found

Qu'est-ce que vous êtes censé faire est de déclarer le type réel de UsersToView dans votre déclaration de modèle, au lieu du nom de la variable, comme indiqué dans les réponses de l'autre:

@model IEnumerable<users> 

Alors s'il vous plaît remarquer que maintenant il est utilisé users au lieu de UsersToView. Bien sûr, je l'ai écrit IEnumerable qui est plus générique que List vous pouvez donc envoyer un tableau de users trop à la vue, mais si vous avez besoin de méthodes LINQ pour List s alors bien sûr vous pouvez faire:

@model List<users> 
2

Ici vous pouvez passer une liste de users comme cette façon:

Controller:

DatabaseContext db = new DatabaseContext(); 

return View(db.users.ToList()); 

Et Vue:

@model IEnumerable<users> 
1

Votre code de commande semble bon. Essayez avec ce code dans Voir

Première voie

@model IList<users> 

Second Way

@model IEnumerable<users>