Soi joindre requête LINQ et le retour de la Vue
Je suis à l'aide de LINQ Auto Requête de Jointure pour afficher des données sur la vue .ma table sql contient certains employés de détails .J'ai besoin d'afficher les informations sur les employés avec leur Gestionnaire de Nom
comme il est ManagerID dans le tableau
EmpID Nom ManagerID Désignation De Téléphone Adresse 1 Mike 3 Développeur 123456 Texas 2 David 3 RM 123456 Delhi 3 Roger NULL GM 123456 Dallas 4 Épouser 2 Développeur 123456 NY 5 Joseph 2 Développeur 123456 Singapour 7 Ben 2 Développeur 123456 Mumbai 8 Steven 3 TL 123456 Banglore
j'ai besoin de changer de nom
mon code est dans l'action du contrôleur
var emp = from m in t.Employees
join e1 in t.Employees on m.ManagerID equals e1.EmployeeID
select new { Id = m.EmployeeID ,
Name = m.Name,
Manager = e1.Name ,
Designation = m.Designation,
Phone =m.Phone ,address = m.Address };
return View(emp.Tolist());
et en Vue
@model IEnumerable <mvc4application.models.employee>
mais j'obtiens une erreur d'exécution
L'élément de modèle adopté dans le dictionnaire est de type
Système.Les données.Objets.ObjectQuery1[<>f__AnonymousType1
6[Système.Int32,Système.Chaîne,
Système.Chaîne,Système.Chaîne,Système.Nullable1[System.Int32],System.String]]',
1[Mvc4application.Modèles.L'employé]'.]
but this dictionary requires a model item of type
'System.Collections.Generic.IEnumerable
Système.Web.Mvc.ViewDataDictionary`1.SetModel(la valeur de l'Objet) +405487
Bien Sûr je suis à la compréhension de ce parce que mon point de vue est à l'aide de Mvc4application.Models.Employee type
.
Que je ne suis pas en mesure de lancer pour le type de modèle .
peut-on utiliser en mode SQL comme modèle MVC, de sorte que nous pouvons faire rejoindre dans SQL?
OriginalL'auteur gauravupadhyay | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
Vous retourner un objet anonyme alors que votre point de vue est fortement typée pour
IEnumerable<mvc4application.models.employee>
.Je recommanderais très vivement vous écrire un modèle de vue qui va correspondre aux exigences de votre point de vue et contiennent les informations que vous souhaitez travailler avec ce point de vue:
et d'adapter ensuite à votre requête LINQ pour projet le domaine différents EF objet dans le modèle de vue:
et enfin d'avoir une vue fortement typée pour le modèle de vue:
et maintenant vous pouvez présenter l'information:
for
boucle et pas unforeach
boucle?Parce que je déteste. Il y a foule de messages de blog montrant comment utiliser
foreach
des boucles de Rasoir points de vue et gazillion de questions sur StackOverflow sur le pourquoi de la liaison de modèle ne fonctionne pas pour les collections. C'est tout simplement que lorsque vous utilisez le fortement typé éditeur aides avec une boucle foreach, ils ne génèrent pas de noms propres pour les champs de saisie. Dans ce cas, il n'a pas d'importance, car il ne sont pas tous les champs de saisie, mais je ne veux pas enseigner aux gens d'utiliser ces foreach, parce que je sens que la prochaine question va être pourquoi je ne peux pas soumettre les données de retour à mon contrôleur de l'action.J'ai donc utilisé
for
au lieu deforeach
dans une anticipation des possibles aux questions de l'OP 🙂 dès Qu'il remplace le code Html.Méthode displayfor avec Html.EditorFor et les lieux de la<table>
dans un formulaire HTML et tente de soumettre ce formulaire, il pourra avoir de mauvaise surprise si il a utilisé foreach.Tout droit, je n'ai jamais eu de problèmes avec elle, mais merci pour la clarification.
Merci . certainement c'est Sympa de répondre, mais être un débutant en ASP net MVC, j'ai cette question que pour une seule Propriété (nom du responsable), nous devons créer un modèle.pouvons-nous utiliser les anonymes de l'objet pour afficher les données dans la vue.
OriginalL'auteur Darin Dimitrov