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