Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC3 doesn't recognize MvcContrib namespace in Razor View

I'm trying to paginate something with MvcContrib's Html.Pager(), but my razor views can't reference the right namespace.

Controller is ok:

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

But, the view can't make sense of either:

@using MvcContrib

OR

@Html.Pager((IPagination)Model)

I installed MvcContrib via NuGet. I tried adding MvcContrib, MvcContrib.UI and MvcContrib.UI.Html namespaces to <pages><namespaces> in web.config with no luck. Did I miss something?

like image 355
David Fox Avatar asked Mar 18 '11 01:03

David Fox


1 Answers

Contrary to WebForms, Razor doesn't use the <namespaces> section in ~/web.config. It uses the <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>

and then:

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

or you could also add the proper namespace to your view if you prefer:

@model MvcContrib.Pagination.IPagination<SomeViewModel>
@using MvcContrib.UI.Pager
@Html.Pager(Model)
like image 87
Darin Dimitrov Avatar answered Oct 18 '22 01:10

Darin Dimitrov