MVC3 не распознает пространство имен MvcContrib в представлении Razor

Я пытаюсь разбивать что-то на MvcContrib Html.Pager(), но мои представления бритвы не могут ссылаться на правильное пространство имен.

Контроллер в порядке:

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

Но представление тоже не имеет смысла:

@using MvcContrib

ИЛИ

@Html.Pager((IPagination)Model)

Я установил MvcContrib через NuGet. Я попробовал добавить MvcContrib, MvcContrib.UI и MvcContrib.UI.Html пространства имен в <pages><namespaces> в web.config без везения. Я что-то пропустил?

Ответ 1

В отличие от WebForms, Razor не использует раздел <namespaces> в ~/web.config. Он использует <namespaces> в ~/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>

а затем:

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

или вы также можете добавить подходящее пространство имен в свое представление, если хотите:

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

Ответ 2

После добавления ссылки MvcContrib.dll попробуйте этот код.

@using MvcContrib.UI.Pager
@using MvcContrib.Pagination
@model IPagination    

@Html.Pager(Model)

Я разместил пейджинг MvcContrib Grid, фильтруя + MVC3 Razor образец статьи в мой блог.