MVC 3 Razor视图中找不到命名空间

9

我将PagedList添加到我的视图中,并松散地遵循这个教程。我使用Nuget安装了PagedList参考,如下设置了我的控制器:

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

我用以下模型编写了我的视图

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

当我运行页面时,会出现以下错误。
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>> {

当我将PagedList dll从视图中移除后,一切按预期运行,因此在我的控制器中正确加载了它。CopyLocal属性设置为“True”,并尝试在特定区域的Views\Web.Config中包含名称空间。还有什么其他方法可以让视图看到名称空间?

10个回答

16

我需要将命名空间添加到Views web.config文件中。

详细信息请参见此SO帖子

然后我需要关闭/重新打开Visual Studio 2010才能识别。编译项目没有帮助(web.config可能只在项目加载时读取一次)。


4

我在使用一个没有设置为“拷贝本地”选项的程序集时也遇到了这个问题,之后更改了程序集引用属性后,问题得到解决。


2
根据包管理器控制台的信息,我的项目之前引用了PagedList, 但在“解决方案资源管理器”的项目引用中并未显示。解决方法是使用包管理器控制台将PagedList.MVC卸载,然后卸载PagedList,再像下面这样重新安装它们: - uninstall-package PagedList.mvc - uninstall-package PagedList - install-package PagedList - install-package PagedList.mvc
完成操作后一切正常。

2

首先,非常抱歉我的英语很糟糕。在我的情况下,我使用Visual Studio Community 2015中的MVC5,并通过以下方式解决了问题:

首先,删除Visual Studio和NuGet缓存:

  • Visual Studio - 转到 %LocalAppData% \Microsoft\WebsiteCache 并删除所有文件夹。
  • NuGet - 这里

然后,我使用包管理器控制台删除了PagedList.MVC,然后删除了PagedList,再像这样重新安装它们:

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

希望能对你有所帮助。


我并没有感觉到需要清除缓存和临时文件。只是卸载和重新安装就可以了。谢谢。 - Umer Farooq

0

我一直需要在视图中导入MvcPaging才能使用PagedList。但是在使用Nuget之前,我已经使用了这个库,所以我不知道命名空间可能会发生什么变化。在VB.NET Web Forms视图中,我使用了<%@ Import Namespace="MvcPaging" %>


在对象浏览器中,命名空间看起来是“PagedList”,这也是控制器正在编译的内容。 - PlTaylor

0

我的整个项目出了问题。我创建了一个新项目,复制了重要的内容,现在一切都正常了。我完全不知道原始项目出了什么问题。


0
对于其他遇到和我一样问题的人,我想提供一些信息。在我的控制器中,“using PagedList;”是正确的,但是我遇到的问题在视图的web.config文件中,我添加了一个名字空间引用“PageList”,但是拼写错误了!(应该是PagedList - 注意'd')。

0
在我的情况下,错误提示是关于 PagedList.MVC 的,我还需要进行安装:

不仅仅是 PagedList。


0

当我将我的库构建为

控制台应用程序(EXE)

而不是

类库(DLL)

时,我得到了这个错误。虽然作为控制台应用程序的库可以在C#后端中加载和运行,但在razor中失败并显示CS0246。

输出类型从控制台应用程序更改为类库对我有帮助。


0
在我的情况下,我必须在.cshtml、.cs和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;

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接