技术开发 频道

ASP.NET MVC中对数据进行排序的方法

    【IT168 专稿】本系列是讲解如何在asp.net mvc中对数据进行展示、排序、分页等的系列文章。在上周的文章中,一步一步教会了大家如何使用ASP.NET MVC框架去的展示数据。在上周的文章中,我们先用Visual Studio创建了一个新的ASP.NET MVC应用程序,接着连接到了Northwind数据库,并展示了如何使用微软的LINQ-SQL的工具去访问数据库中的数据,接着指导如何去实现视图层去展示产品信息及如何设计控制器。

  本文是在上一篇文章的例子基础上,展示了如何去实现数据的双向排序。如果你是已经熟悉ASP.NET WebForm开发的开发者,你应该知道,在GridView控件中可以很简单的通过点击就能实现排序。但可惜的是,在ASP.NET MVC中实现排序的功能并不是那么简单,但工作量也没有显着增多。在ASP.NET MVC中,我们能更多地控制网格和排序的界面布局和标记,以及通过何种机制来实现排序。以往使用GridView控件时,排序是通过将参数以POSTBACK的形式回传到后台,以决定用什么样的列进行排序以及是以升序或降序-排列,回传的参数作为隐藏表单域提交。在本文中,我们将使用查询字符串参数来指定排序参数,这意味着排序的顺序可以被搜索引擎搜索到,能通过电子邮件发送给同事,还能做很多GridView内置排序功能不能实现的事情。

  与上一篇文章一样,本文提供了分步的指导说明,包括一个完整的可以工作的代码例子,在文章末尾可以下载。

  步骤0:一个简要指南

  本文将介绍如何实现双向的排序,并假定读者已经阅读掌握了上一篇文章介绍的内容。

  在上一篇文章中,我们可以通过ASP.NET MVC中的URL转发功能,以下面的地址形式访问产品的首页:

  www.yoursite.com/Products/Index(可以简写成www.yoursite.com/Products)。本文中,我们将用下面的URL去访问要排序的内容:

  www.yoursite.com/Products/Sortable?sortBy=ColumnName&ascending=true|false

  具体的一些例子如下:

  /Products/Sortable- 这表示按默认顺序排列产品。当没指定排序的列时,默认按产品名称的字母顺序(如升序)排列。换句话说,如果SortBy参数没有提供,按产品名称排序,如果不提供ascending参数,按递增顺序排列。

  /Products/Sortable?sortBy=UnitPrice 按单价的升序排序产品。

  /Products/Sortable?sortBy=UnitPrice&ascending=false – 按UnitPrice列降序排序(即从最昂贵的到价格最便宜的)。

  跟使用GridView控件一样,在点击网格中标题行中的列名时可以进行。但不同于GridView的是,我们每次点列的这些标题,是以超链接的形式实现的,并且带有参数,比

  如表格中有价格这个列,当第一次点击列名时,将以

  www.yoursite.com/Products/Sortable?sortBy=UnitPrice&ascending=true的形式发送链接到后端,请注意的是,在网格中显示的列名,不一定跟在URL中sortBy查询字符串参数中传递的名称是一样的。sortBy 参数提供的是在数据库中的列名,两者并不要求一定相同。

0
相关文章