MVC3无法识别Razor View中的MvcContrib命名空间

Dav*_*Fox 11 pagination mvccontrib razor asp.net-mvc-3

我正在尝试用MvcContrib来分页Html.Pager(),但我的剃刀视图无法引用正确的命名空间.

控制器还可以:

using MvcContrib.Pagination;
...
public ActionResult List(int? page)
{
    return View(new UserRepository().GetUserList().AsPagination(page ?? 1, 10));
}
Run Code Online (Sandbox Code Playgroud)

但是,观点无法理解:

@using MvcContrib
Run Code Online (Sandbox Code Playgroud)

要么

@Html.Pager((IPagination)Model)
Run Code Online (Sandbox Code Playgroud)

我通过NuGet安装了MvcContrib.我尝试添加MvcContrib,MvcContrib.UIMvcContrib.UI.Html命名空间<pages><namespaces>在web.config中没有运气.我错过了什么?

Dar*_*rov 15

与WebForms相反,Razor不使用该<namespaces>部分~/web.config.它使用<namespaces>in ~/Views/web.config:

  <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>
Run Code Online (Sandbox Code Playgroud)

然后:

@model MvcContrib.Pagination.IPagination<SomeViewModel>
@Html.Pager(Model)
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,还可以在视图中添加适当的命名空间:

@model MvcContrib.Pagination.IPagination<SomeViewModel>
@using MvcContrib.UI.Pager
@Html.Pager(Model)
Run Code Online (Sandbox Code Playgroud)