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


我正在尝试用MvcContrib's分页 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)

我通过NuGet安装了MvcContrib。我尝试添加 MvcContribMvcContrib.UI 和 MvcContrib.UI.Html 名称空间到 <pages><namespaces> 在web.config没有运气。我错过了什么?


9956
2018-03-18 01:14


起源



答案:


与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)

15
2018-03-18 09:12



我会试一试 - 我认为NuGet会自动完成。 - David Fox
@Darin在与微软的WebGrid合作之后,我决定给MvcContrib的网格一个机会。到目前为止,我喜欢它。更好地使用大量可自定义的点...我觉得唯一缺少的是网站上更加一致的文档部分 mvccontrib.codeplex.com/... 安装NuGet包时,可以更好地与ASP.NET MVC应用程序集成。 - Leniel Maccaferri


答案:


与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)

15
2018-03-18 09:12



我会试一试 - 我认为NuGet会自动完成。 - David Fox
@Darin在与微软的WebGrid合作之后,我决定给MvcContrib的网格一个机会。到目前为止,我喜欢它。更好地使用大量可自定义的点...我觉得唯一缺少的是网站上更加一致的文档部分 mvccontrib.codeplex.com/... 安装NuGet包时,可以更好地与ASP.NET MVC应用程序集成。 - Leniel Maccaferri


添加MvcContrib.dll引用后,请尝试此代码。

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

@Html.Pager(Model)

我发布了MvcContrib网格分页,过滤+ MVC3 Razor 样品 到我的博客。


0
2018-03-21 04:56