我一直在尝试让 ng-table( Angular Directive(指令))与 Web api (ASP.NET MVC) 一起使用。我可以加载和分页数据,但排序或过滤不起作用。
奇怪的是,排序或过滤在 URL 中看起来像这样:
如果你“格式化”它,它看起来像这样:
过滤器[评级.名称] = fs
排序[评级.描述] = asc
我尝试使用字符串数组或字典(KeyValuePair)获取它们
但我无法获取这些值。所以我永远无法对数据进行过滤或排序。
希望大家给我一些建议!感谢您的帮助!
最佳答案
我编写了一个辅助类来处理这个问题。 URL 的格式不符合 WebAPI 期望的方式,因此无法让 ModelBinder 自动解析它。
从您的 Controller 中调用帮助程序并提供完整的 URL:
// Parse sortings
var sortings = TableHelpers.ParseSortings(Request.RequestUri).ToList();
// Parse filters
var filters = TableHelpers.ParseFilters(Request.RequestUri).ToList();
以及辅助类
public static class TableHelpers
{
public static IEnumerable<TableSorting> ParseSortings(Uri requestUri)
{
var regex = new Regex("sorting%5B(.+?)%5D=(asc|desc)");
var matches = regex.Matches(requestUri.AbsoluteUri);
return from Match match in matches
select new TableSorting {Field = match.Groups[1].Value, Order = match.Groups[2].Value};
}
public static IEnumerable<TableFilter> ParseFilters(Uri requestUri)
{
var regex = new Regex("filter%5B(.+?)%5D=(.+?)(?:&|\\z)");
var matches = regex.Matches(requestUri.AbsoluteUri);
return from Match match in matches
select new TableFilter {Field = match.Groups[1].Value, Value = match.Groups[2].Value};
}
}
public class TableSorting
{
public string Field { get; set; }
public string Order { get; set; }
}
public class TableFilter
{
public string Field { get; set; }
public string Value { get; set; }
}
关于javascript - Web API MVC 从 ng-table 获取查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34135560/