Asp.net mvc MVC3索引视图中的更改顺序

Asp.net mvc MVC3索引视图中的更改顺序,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,希望有可点击的列标题,如点击标记码一次,它的顺序,然后再次颠倒。数字也一样 使用MVC3/Razor和LightSpeed(ORM) 我知道电网可能是前进的方向。但由于我不需要分页或过滤,所以我现在希望保持简单 问题有没有一个简单的代码示例(可能带有向上/向下图标)会有所帮助 @Dave 使用mvccontribgrid,仅按以下顺序排序如何: 在我看来,使用mvccontribgrid可能会带来更简单的代码。 例如,这是控制器代码 public class HomeControlle

希望有可点击的列标题,如点击标记码一次,它的顺序,然后再次颠倒。数字也一样

使用MVC3/Razor和LightSpeed(ORM)

我知道电网可能是前进的方向。但由于我不需要分页或过滤,所以我现在希望保持简单

问题有没有一个简单的代码示例(可能带有向上/向下图标)会有所帮助

@Dave

使用mvccontribgrid,仅按以下顺序排序如何:

在我看来,使用mvccontribgrid可能会带来更简单的代码。 例如,这是控制器代码

    public class HomeController : Controller
{
    private AlbumService _service;

    public HomeController()
    {
        _service = new AlbumService();
    }

    public ActionResult Index(GridSortOptions gridSortOptions)
    {
        var vm = new ViewModel<Album>()
        {
            DefaultSort = "AlbumId",
            GridSortOptions = gridSortOptions,
            List = _service.GetAlbums()
            .OrderBy(gridSortOptions.Column, gridSortOptions.Direction),
        };

        return View(vm);
    }

    public ActionResult Details(int id)
    {
        var album = _service.GetAlbum(id);
        ViewBag.RouteDicForList = Request.QueryString.ToRouteDic(); 
        return View(album);
    }
}
公共类HomeController:控制器
{
私人相册服务;;
公共家庭控制器()
{
_服务=新服务();
}
公共行动结果索引(GridSortOptions GridSortOptions)
{
var vm=带有简单服务的新ViewModel&EF4

此外,我还发布了功能齐全的mvccontrib网格过滤和分页文章。

@Dave

对不起,我在第一次回答中没有抓住你的要点
如果要使用纯MVC3实现排序, 我可以通过以下步骤来实现

  • 列表操作方法通过ViewBag将sortcolumn和订单信息传递到viewpage
  • 用于构建带有列顺序显示的actionlink的Html帮助程序方法
  • 调用helper方法的列表视图页


    列出操作方法

            public ActionResult Index(string sortColumn, bool? asc)
        {
            if (string.IsNullOrWhiteSpace(sortColumn))
                sortColumn = "Number";
    
            asc = asc ?? true;
            SortDirection sortDirection = asc == true ? SortDirection.Ascending : SortDirection.Descending;
            var query = _service.GetTags().OrderBy(sortColumn, sortDirection);
    
            return View(query);
        }
    
            public static MvcHtmlString ActionLinkWithColumnOrder(this HtmlHelper helper,
            string columnName,string action,string currentColumn,bool currentOrder)
        {
            object routeValues;
            object htmlAttributes = null;
            if (columnName == currentColumn)
            {
                routeValues = new { sortColumn = columnName, asc = !currentOrder };
                htmlAttributes = new { @class = currentOrder ? "sort_asc" : "sort_desc" };
            }
            else
            {
                routeValues = new { sortColumn = columnName };
            }
    
            return helper.ActionLink(columnName, action, routeValues, htmlAttributes);
        }
    
    Html帮助程序方法

            public ActionResult Index(string sortColumn, bool? asc)
        {
            if (string.IsNullOrWhiteSpace(sortColumn))
                sortColumn = "Number";
    
            asc = asc ?? true;
            SortDirection sortDirection = asc == true ? SortDirection.Ascending : SortDirection.Descending;
            var query = _service.GetTags().OrderBy(sortColumn, sortDirection);
    
            return View(query);
        }
    
            public static MvcHtmlString ActionLinkWithColumnOrder(this HtmlHelper helper,
            string columnName,string action,string currentColumn,bool currentOrder)
        {
            object routeValues;
            object htmlAttributes = null;
            if (columnName == currentColumn)
            {
                routeValues = new { sortColumn = columnName, asc = !currentOrder };
                htmlAttributes = new { @class = currentOrder ? "sort_asc" : "sort_desc" };
            }
            else
            {
                routeValues = new { sortColumn = columnName };
            }
    
            return helper.ActionLink(columnName, action, routeValues, htmlAttributes);
        }
    
    列表查看页面

    @Html.ActionLinkWithColumnOrder(“标记码”、“索引”、“字符串”)ViewBag.sortColumn,(bool)ViewBag.asc)

    @Html.ActionLinkWithColumnOrder(“数字”、“索引”、“字符串”)ViewBag.sortColumn,(bool)ViewBag.asc)



    祝你玩得开心!


    桑苏公园()

    非常感谢@Sangsu我实际上在寻找一些超级简单的东西。但这看起来是一个很好的下一步。@Sansu-非常感谢这是理想的。我喜欢MVC的地方是没有任何神奇的事情发生。这很完美。我可能需要编写更多的代码,但当我回到它的时候很容易理解。我写了这篇文章,展示了如何做到这一点使用LightSpeed进行动态查询。谢谢Ivan:@Dave。如果您可以在mvccontrib.sorting中使用orderby扩展,代码会更简单。