Преобразование IQueryable в список и итерация с использованием foreach - PullRequest
0 голосов
/ 10 декабря 2010

Я новичок на mvc.Я использую шаблон репозитория с linq2sql с использованием mvc Просто делаю тест, чтобы получить четкое представление обо всем вокруг. Я пытаюсь вывести авторов из таблицы авторов.

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

    public IQueryable<BK_Author> Authors
    {

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

    }

в контроллерах

public class AuthorsController : Controller
{
    private IAuthorRepository _authorRepo;

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

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

в части просмотра

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

Когда я пытаюсь запустить его, у меня возникает исключение компилятора

"оператор foreach не может работать с переменными типа« BK_Author », поскольку« BK_Author »не содержит открытого определения для« GetEnumerator »»

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Модель страницы каким-то образом настроена на объект BK_Author, а не AuthorsRepository. Установите значение AuthorsRepository и получите доступ к списку авторов, используя его свойство Authors.

0 голосов
/ 10 декабря 2010

На странице просмотра вы можете просто унаследовать что-то вроде этого:

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

или после foreach (var k в модели) вы должны указать k для авторов, как:

Authors author = (Authors)k;

Надеюсь, что это поможет !!

...