【问题标题】:Any page navigation helpers for ASP.NET MVC?ASP.NET MVC 的任何页面导航助手?
【发布时间】:2008-10-28 04:58:25
【问题描述】:

是否有任何用于页面导航的 html 助手。例如。如果我有 1000 条记录要显示,我想在过滤后的集合下显示 Previous 1 2 3 4 ... etc Next 链接内容。

有人知道吗?

【问题讨论】:

    标签: asp.net-mvc navigation


    【解决方案1】:

    如果您从 JSON 数据创建数据表,我强烈推荐 YUI(雅虎 UI 库)DataTable 组件 (http://developer.yahoo.com/yui/datatable/)。它的分页非常好,您可以选择返回整个记录集以开始,然后在所有客户端分页或从服务器返回一个分页集。

    可能不适合您的场景,但只是想我会提一下。

    【讨论】:

      【解决方案2】:

      【讨论】:

      【解决方案3】:

      我的Dynamic Data for MVC sample application 中有一个分页网格,但该网格是手工渲染的。数据使用 PagedList,它来自 Rob Conery(我认为他是从 ScottGu 那里得到的)。

      我一直在考虑 MVC 的分页网格助手可能是什么样的......

      【讨论】:

      • 是的,布拉德,我试图避免使用一些预烘焙的控件,因为它们可能包含一些 webforms 代码。我们需要融入未来的可能是 Html.PageNavigation(...) 帮助器,它需要很多参数......来自记录数、记录总数、css 类等,甚至只是一个 PagedList(我也广泛使用 .. 与 LazyList 一起(向 Rob Con 点头)。我已经开始编写 PageNavigation : ViewUserControl 视图用户控件,可以将其拖放到任何视图的任何位置。将其放入也将是超级轴。所以也许没有
      【解决方案4】:

      到目前为止,我为分页所做的是创建一个 Pager 控件, 它需要一个分页 url、用于更新的 html 元素 id、页码、页面大小和总数。

      分页 url 是表单控制器/动作,其中动作返回一个 html 字符串(呈现的数据页面)

      分页器会附加页面的 javascript 链接列表。这些链接调用一个基于 jQuery 的 ajax 函数,该函数会点击分页 url。每次页面点击都会将 html 元素的当前内容替换为 ajax 调用的结果。 像这样的:

      public string Render()
      {
          var buffer = new StringBuilder( 1000 );
          buffer.AppendLine( @"<ul class=""datatable_pager"">" )
              .AppendLine( "\t<li>Additional Pages:</li>" );
          int numberOfPages = TotalItemCount % PageSize == 0 ? TotalItemCount / PageSize : TotalItemCount / PageSize + 1;
      
          for( int i = 0; i < numberOfPages; i++ )
          {
              AppendPageLink( buffer, i );
          }
      
          buffer.AppendLine( "\t</ul>" );
          AppendPagingJS( buffer );
      
          return buffer.ToString( );
      }
      
      private void AppendPageLink( StringBuilder buffer, int i )
      {
          buffer.Append( "\t\t<li><a href=\"" )
          .Append( PagingLink.Replace( "$PAGE$", i.ToString( ) ) )
          .Append( "\">" )
          .Append( i.ToString( ) )
          .Append( "</a>" )
          .AppendLine( "\t\t</li>" );
      }
      
      
      private void AppendPagingJS( StringBuilder buffer )
      {
          buffer.AppendLine( @"
              <script type=""text/javascript"">
              function page( page, size, updateElement )
              {
                  $.post( '" + PagingUrl + @"',
                      {
                          pageNumber: page, 
                          pageSize: size,
                      },
                      function(response) 
                      {
                          $(""#"" + updateElement).html(response);
                      },
                      ""html""
                  );
              }
              </script>" );
      }
      

      javascript 发布到分页 url,因此该操作需要执行以下操作:

      int.TryParse(Request.Params["pageNumber"], out page) int.TryParse(Request.Params["pageSize"], out size))

      并将结果与​​您的数据访问组件一起使用以获取数据页面,将其呈现为 html 并返回。

      希望对您有所帮助,如果需要,我可以扩展它。

      【讨论】:

        猜你喜欢
        • 2014-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多