2010-12-10 26 views
0

Je suis un noob à mvc.Je suis en utilisant un modèle de référentiel avec linq2sql en utilisant mvc Juste faire un test pour avoir une idée claire tout autour de l'it. J'essaie de sortir les auteurs de la table auteur.Conversion IQueryable à la liste et itérer en utilisant foreach

public class AuthorsRepository : IAuthorRepository 
{ 
    private Table<BK_Author> _authorsTable; 

    public IQueryable<BK_Author> Authors 
    { 

     get { return _authorsTable.AsQueryable<BK_Author>(); } 

    } 

dans les contrôleurs

public class AuthorsController : Controller 
{ 
    private IAuthorRepository _authorRepo; 

    public AuthorsController() 
    { 
     string connectionString = ""; 
     _authorRepo = new AuthorsRepository(connectionString); 
    } 

    public ViewResult List() 
    {    
     return View(_authorRepo.Authors.ToList()); 
    } 

sur la partie vue

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
<div class="item"> 
    <% foreach (var k in Model) 
     { %> 
     <%: k.Author_Name %> 
     <%: k.Author_email %> 
     <%: k.Author_phonenumber %> 
     <%: k.Author_Website %> 
    <% }%>   
</div> 

Lorsque je tente de l'exécuter, j'ai une exception compilateur

« foreach statem ent ne peut pas fonctionner sur des variables de type « BK_Author » parce que « BK_Author » ne contient pas de définition publique pour «

+3

'foreach (var k dans Model)' est probablement faux. Voulez-vous dire 'foreach (var k dans Model.Authors)'? – Gabe

Répondre

1

modèle de page « GetEnumerator » est en quelque sorte réglé sur un objet de BK_Author et non de AuthorsRepository. Définissez-le sur AuthorsRepository et accédez à la liste des auteurs à l'aide de sa propriété Authors.

+0

merci problème résolu. – Jonaz

0

Dans votre Voir la page, vous pouvez simplement hériter quelque chose comme ceci:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<Authors>>" 

ou après foreach (var k dans le modèle), vous devriez cas k aux auteurs comme:

Authors author = (Authors)k; 

Hope this Aidez-moi!!