Namespace not found in MVC 3 Razor view

2019-02-13 06:45发布

I am adding a PagedList to my view and loosely following this Tutorial. I have installed the PagedList reference using Nuget, set up my controller as follows

public ViewResult Index(int page = 1)
    {
        List<Part> model = this.db.Parts.ToList();
        const int pageSize = 20;
        return View(model.ToPagedList(page, pageSize));
    }

And written my view with the following model at the top

@model PagedList.IPagedList<RIS.Models.Part>

When I run the page I get the following error

Compiler Error Message: CS0246: The type or namespace name 'PagedList' could not be found (are you missing a using directive or an assembly reference?)

Source Error:


Line 27:     
Line 28:     
Line 29:     public class _Page_Areas_Parts_Views_Part_Index_cshtml : System.Web.Mvc.WebViewPage<PagedList.IPagedList<RIS.Models.Part>> {

The PagedList dll is being properly loaded in my controller because when I take it out of my view everything works as expected. The CopyLocal property is set to 'True' and I have tried including the namespace in the Views\Web.Config in my specific Area. What else can I do to make the View see the Namespace?

9条回答
贼婆χ
2楼-- · 2019-02-13 07:03

I needed to add the namespace to the Views web.config file.

Details are in this SO post:

I then needed to close/re-open Visual Studio 2010 in order for it to recognize. Compiling the project didn't help (the web.config might only be read once upon project load).

查看更多
再贱就再见
3楼-- · 2019-02-13 07:03

I had this problem as well when using an assembly that wasn't set to "Copy Local", after changing the assembly reference properties it works as expected.

查看更多
劫难
4楼-- · 2019-02-13 07:04

In my case, I have to configure it in .cshtml, .cs and in web.config

.cshtml

@model PagedList.IPageList<namespace.model>
@using PagedList.Mvc;

Web.Config

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup> 

.cs

using PagedList;

Hope this helps

查看更多
再贱就再见
5楼-- · 2019-02-13 07:11

In my case, the error was complaining about PagedList.MVC and I had to also install:

not only PagedList.

查看更多
贪生不怕死
6楼-- · 2019-02-13 07:15

First sorry for my terrible English. In my case, I use the MVC5 in Visual Studio Community 2015 and I solved the problem this way:

First I delete the cache of Visual Studio and NuGet cache:

  • Visual studio - go to %LocalAppData% \Microsoft\WebsiteCache and delete all folder.
  • Nuget - here

After I use the package manager console to remove PagedList.MVC, then remove PagedList and then re-install them again like so:

  • uninstall-package PagedList.mvc
  • uninstall-package PagedList
  • install-package PagedList
  • install-package PagedList.mvc

I holpe that help

查看更多
小情绪 Triste *
7楼-- · 2019-02-13 07:19

I have always had to import MvcPaging to my views in order to use PagedList. But I was using the library prior to Nuget so I don't know how the namespaces may have changed. In a VB.NET web forms view, I used <%@ Import Namespace="MvcPaging" %>

查看更多
登录 后发表回答