MVC3在Razor视图中无法识别MvcContrib命名空间

11
我正在尝试使用MvcContrib的Html.Pager()对某些内容进行分页,但我的Razor视图无法引用正确的命名空间。
控制器没问题:
using MvcContrib.Pagination;
...
public ActionResult List(int? page)
{
    return View(new UserRepository().GetUserList().AsPagination(page ?? 1, 10));
}

但视图无法理解其中任何一个:

@using MvcContrib

@Html.Pager((IPagination)Model)

我通过NuGet安装了MvcContrib。我尝试将MvcContribMvcContrib.UIMvcContrib.UI.Html命名空间添加到web.config的<pages><namespaces>中,但没有成功。我有遗漏什么吗?

2个回答

15

与WebForms不同,Razor模板引擎不使用<namespaces>部分在~/web.config文件中。它使用~/Views/web.config文件中的<namespaces>部分:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="MvcContrib"/>
        <add namespace="MvcContrib.UI.Grid"/>
        <add namespace="MvcContrib.UI.Pager"/>
      </namespaces>
    </pages>
  </system.web.webPages.razor>

然后:

@model MvcContrib.Pagination.IPagination<SomeViewModel>
@Html.Pager(Model)

或者,如果你喜欢的话,你也可以将正确的命名空间添加到你的视图中:

@model MvcContrib.Pagination.IPagination<SomeViewModel>
@using MvcContrib.UI.Pager
@Html.Pager(Model)

1
我会试一下 - 我以为NuGet会自动完成这个。 - David Fox
@Darin 在使用微软的WebGrid之后,我决定尝试一下MvcContrib的网格控件。到目前为止,我很喜欢它。它比原来的更好,有很多可自定义的点......唯一觉得缺少的是网站http://mvccontrib.codeplex.com/wikipage?title=Grid&referringTitle=Documentation上更一致的文档部分和更好的与ASP.NET MVC应用程序集成,当NuGet包被安装时。 - Leniel Maccaferri

0
在添加MvcContrib.dll引用后,尝试使用此代码。
@using MvcContrib.UI.Pager
@using MvcContrib.Pagination
@model IPagination    

@Html.Pager(Model)

我在我的博客上发布了关于MvcContrib Grid分页、过滤器+MVC3 Razor的示例文章

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