2016-07-08 11 views
12

Dodałem następujący pakiet Nuget do mojego MVC 5 aplikacji X.PagedList.Mvctypu „IEnumerable <>” zostało zdefiniowane w zespole, który nie odwołuje

wrócę wyniki w moim kontrolera/widoku jako następująco:

// Repo 
public IPagedList<Post> GetPagedPosts(int pageNumber, int pageSize) 
{ 
    var posts = _context.Post 
     .Include(x => x.Category) 
     .Include(x => x.Type); 

    // Return a paged list 
    return posts.ToPagedList(pageNumber, pageSize); 

} 

// View model 
public class PostViewModel 
{ 
    public IPagedList<Post> Posts { get; set; } 
    ... 
} 

// Controller method 
public ActionResult Index(int? page) 
{ 

    int pageNumber = page ?? 1; 
    int pagesize = 5; 

    var posts = _PostRepository.GetPagedPosts(pageNumber, pagesize); 

    var viewModel = new PostViewModel 
    { 
     Posts = posts, 
     ... 
    }; 

    return View(viewModel); 
} 

// View 
@model MyApp.ViewModels.PostViewModel 
@using X.PagedList.Mvc; 
@using X.PagedList; 

<p>Page @(Model.Posts.PageCount < Model.Posts.PageNumber ? 0 : Model.Posts.PageNumber) of @Model.Posts.PageCount </p> 

Ale moim zdaniem otrzymuję następujący błąd The type 'IEnumerable<>' is defined in an assembly that is not referenced. System.Runtime...

nie mam plik project.json w mojej aplikacji, więc co to za błąd?

+0

można pokazać za pomocą oświadczenia? – Win

+0

Upewnij się, że nie masz odniesienia do "System.Runtime". To może sprawić, że sprawy będą nudne. –

+0

Czy odwołujesz się i używasz PCL, takich jak 'Microsoft BCL Portability Pack'? Upewnij się, że wszystkie twoje wersje zestawu są takie same, usuń '.suo' i wykonaj polecenie clean/build. –

Odpowiedz

12

Upewnij się, że następujące linie w pliku web.config:

<compilation debug="true" targetFramework="4.6.1"> //don't need to change THIS line, just the content of this section 
    <assemblies> 
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    <add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </assemblies> 
</compilation> 
+4

W celu przyszłego odniesienia, musiałem zamknąć moje Visual Studio, a następnie ponownie otworzyć Visual Studio. Błędy nie zniknęły, nawet po wykonaniu tej odpowiedzi, dopóki nie zamknąłem i nie otworzyłem ponownie. – Rinktacular

+0

Wygląda na to, że 'XPagedList' potrzebuje tych linii, aby pozbyć się ostrzeżeń o Modelu w plikach cshtml. Usunąłem również foldery bin i obj we wszystkich projektach, zamknąłem Visual Studio 2017 i ponownie otworzyłem rozwiązanie. Teraz kompilacja działa bez żadnych błędów. –