2010-06-21 5 views
1

Je construis une simple page ASP.NET MVC 2 simple. J'ai pu faire la page Modifier comme je le voulais, mais j'ai des problèmes avec la page Index.Utilisation de ASP.NET MVC 2 pour afficher l'enregistrement joint

J'ai une table tblContacts qui est jointe par une autre table tblStates, la base de données est normalisée de sorte que la table de contacts (nom, téléphone, adresse, ville, etc.) a un StateId qui référence une table de recherche tblStates qui se compose de tblStates.Id et tblStates.Name.

LINQ-To-Sql à ce moment ... J'ai la page d'index affiché:

public ActionResult Index() { return View(_repository.ListAll()); } 

Bien que nous ayons les données de contacts dans sa gloire, je ne suis pas sûr de savoir comment puis-je afficher le tblState .Name dans la vue?

<%: item.StateID %> <-- how shall I change this into tblState.Name? 

Sous la forme d'édition, j'ai pu afficher le tblStates.Name en faisant ceci:

<%: Html.DropDownList("States", (IEnumerable<SelectListItem>)ViewData["StateID"])%> 

Comment puis-je faire quelque chose comme ce qui précède et afficher l'étiquette comme « bonne »? Je sais qu'il y a quelque chose de simple et qu'il y a un mot-clé/échantillon que je ne trouve pas. Tous les exemples de code que j'ai trouvés me disent comment trouver des enregistrements enfants et les parcourir. Regardé SingleOrDefault (..), FirstOrDefault (..) et il ne semble pas correct.

Merci.

Répondre

0

Si l'association entre tblContacts et tblStates est bien placée dans L2S, vous devriez être en mesure de faire ce qui suit:

public ActionResult Index() { return View(_repository.tblContacts); } 

puis

<%: item.tblState.Name %> 
0

Désolé pour le retard, laisser distraire avec d'autres projets .

Quoi qu'il en soit, la solution proposée ci-dessus n'a pas fonctionné. Je suis allé avec EF4 et utilisé une classe partielle pour étendre le tblContacts pour retourner le nom de l'État ... laissez-moi savoir si vous voulez plus d'informations.