l '"objet" ne contient pas une définition pour 'Nom'
Je suis l'aide de deux DataContext objets de retour séparé AsQueriable() des ensembles de données, puis de joindre les deux à l'aide de linq. Les données de la construction fonctionne parfaitement mais quand je suis passer que l'ensemble de données combinées à la vue, j'obtiens le message d'erreur "objet" ne contient pas une définition pour 'Nom'.
Au cours d'une session de débogage, je peux clairement voir qu'à la fois le Modèle parent et chaque "élément" dans la boucle foreach dispose de toutes les données et les clés visible/accessible. Je suis très confus.
De nombreux autres q&a sur stackoverflow.com ce problème ne résout pas mon problème et comme un résultat apprécierait un regard neuf et je l'espère une solution à ce problème.
Merci beaucoup! - le code de temps:
Les données de construction
public ActionResult SplashImages()
{
var g = (from i in GetGallerySplash() join o in GetFestivals() on i.Festival equals o.ID orderby i.Rating descending select new {i.Photo, i.OwnedBy, i.Rating, o.Name });
Response.ContentType = "text/xml";
return View(g);
}
private IEnumerable<Gallery> GetGallerySplash()
{
GallerysDataContext gdc = new GallerysDataContext();
return (from i in gdc.Galleries orderby i.Rating descending select i).Take(15).AsQueryable();
}
private IEnumerable<Festival> GetFestivals()
{
FestivalsDataContext fdc = new FestivalsDataContext();
return (from i in fdc.Festivals select i).AsQueryable();
}
VSExpress de l'écran d'erreur:
Toute orientation sur une solution serait grandement apprécié. Merci!!!!
C
OriginalL'auteur Chris M | 2011-04-21
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de créer un modèle unique pour encapsuler les deux IEnumerable objets, par exemple
Alors fortement du type de votre vue, pour correspondre le modèle
Puis dans votre modèle, vous pouvez taper en toute sécurité consultez chaque objet, par exemple
Heureux d'être de l'aide. Nous avons dû faire face à des situations semblables, de sorte que j'ai été là où vous avez été 🙂
Je crois que cela s'appelle la MVVM (
Model View ViewModel
) modèle de conception. Fondamentalement, vous ajoutez une autre couche entre votre Modèle et la Vue - Vuemodèle - vous permettant de mieux encapsuler votre modèle en plus de la vue-un format convivial. Beaucoup de gens qui utilisent le modèle MVVM ajouter un autre dossier appeléViewModels
à leur projet, l'émulation de l'utilisation du Modèle, Vue et Contrôleur de dossiers, et placer toutes les classes ViewModel à l'intérieur.OriginalL'auteur tobias86
Vous êtes de retour anonyme de type à afficher dans la vue, d'où les problèmes. Jetez un oeil à ces questions:
Vous pouvez envelopper votre type anonyme en réalité de la classe et de l'utiliser fortement typé vue, ou de jouer avec une certaine dynamique de la magie. Liés à des questions de couvrir ces sujets.
OriginalL'auteur k.m
Essayez de changer votre boucle for pour:
L'utilisation de
var
est à l'origine du type det
en déduire queobject
.Model
n'est pasIEnumerable<object>
je préfère aller pour un statique de la version dactylographiée et d'introduire un poco ...dynamic
est fondamentalement pure réflexion!Bonjour Matthieu, j'ai appliqué ce changement malheureusement, je reçois toujours le même message d'erreur.
le problème est que le type anonyme n'échappera pas à la portée de la méthode d'action et la vue ne connaît que le Modèle type de l'objet.
OriginalL'auteur Matthew Abbott