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

时间:2011-11-29 15:24:40

标签: asp.net-mvc-3 razor

我在我的视图中添加了一个PagedList,然后松散地跟随Tutorial。我已经使用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中包含命名空间。我还能做些什么来使视图看到命名空间?

9 个答案:

答案 0 :(得分:15)

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

详情请参阅此SO post

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

答案 1 :(得分:4)

使用未设置为“复制本地”的程序集时,我也遇到此问题,更改程序集引用属性后,它按预期工作。

答案 2 :(得分:2)

在我的情况下,根据包管理器控制台,我的项目之前有一个对PagedList的引用,但是它没有出现在解决方案资源管理器中的项目引用中。

我的解决方案是使用包管理器控制台删除PagedList.MVC,然后删除PagedList,然后重新安装它们,如下所示:

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

之后一切都很好。

答案 3 :(得分:2)

首先抱歉我可怕的英语。就我而言,我在Visual Studio Community 2015中使用了MVC5,我用这种方式解决了问题:

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

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

使用包管理器控制台删除PagedList.MVC后,删除PagedList,然后重新安装它们,如下所示:

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

我帮忙

答案 4 :(得分:0)

我总是必须将MvcPaging导入我的视图才能使用PagedList。但是我在Nuget之前使用了库,所以我不知道名称空间是如何改变的。在VB.NET Web表单视图中,我使用了<%@ Import Namespace="MvcPaging" %>

答案 5 :(得分:0)

我的整体项目搞砸了。我创建了一个新项目并复制了重要的项目,现在一切正常。我不确定我的原始项目有什么问题。

答案 6 :(得分:0)

对于其他与我有同样问题的人来说,它是在“使用PagedList”停在控制器上的。对我来说(这是正确的),但我遇到的问题是在视图的web.config中我添加了命名空间引用“PageList” - 拼写错误! (应该是PagedList - 注意'd')。

答案 7 :(得分:0)

在我的情况下,错误是抱怨PagedList.MVC,我还必须安装:

不仅仅是PagedList。

答案 8 :(得分: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;

希望这有帮助