2010-12-10 7 views
0

Ich bin ein Noob zu MVC.Ich verwende ein Repository-Muster mit linq2sql mit MVC Nur einige Tests, um eine klare Vorstellung alles um die it. Ich versuche Autoren aus der Author-Tabelle auszugeben.Konvertieren von IQueryable zu Liste und Iterieren mit foreach

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

    public IQueryable<BK_Author> Authors 
    { 

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

    } 

in den Controllern

public class AuthorsController : Controller 
{ 
    private IAuthorRepository _authorRepo; 

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

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

auf der Ansicht Teil

<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> 

Wenn ich versuche, es zu laufen Ich habe ein Compiler Ausnahme

„foreach statisch ent kann nicht mit Variablen vom Typ 'BK_Author' arbeiten, weil 'BK_Author' keine öffentliche Definition für 'GetEnumerator' enthält. "

+3

'foreach (var k in Model)' ist wahrscheinlich falsch. Meintest du foreach (var k in Model.Authors)? – Gabe

Antwort

1

Page's Modell ist irgendwie auf ein Objekt von BK_Author und nicht von AuthorsRepository festgelegt. Setzen Sie es auf AuthorsRepository und greifen Sie auf die Liste der Autoren zu, indem Sie die Eigenschaft Authors verwenden.

+0

Danke Problem gelöst. – Jonaz

0

Ihrer Ansicht Seite, können Sie einfach so etwas wie dies erben:

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

oder nach foreach (var k in Model) Sie sollte wie zu Autoren Fall k:

Authors author = (Authors)k; 

Hoffnung dieser Hilfe!!

Verwandte Themen