javascript - Web API MVC 从 ng-table 获取查询参数?

标签 javascript asp.net angularjs asp.net-web-api2 ngtable

我一直在尝试让 ng-table( Angular Directive(指令))与 Web api (ASP.NET MVC) 一起使用。我可以加载和分页数据,但排序或过滤不起作用。

奇怪的是,排序或过滤在 URL 中看起来像这样:

http://localhost:46278/api/rating?count=10&filter%5Brating.name%5D=fs&page=1&sorting%5Brating.description%5D=asc

如果你“格式化”它,它看起来像这样:

过滤器[评级.名称] = 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/

相关文章:

javascript - 从 JSON 中获取列名

javascript - 固定 header 未涵盖的 JS 组件

javascript - 定位父 div 的最佳方式 - javascript

javascript - 如何调试使用 RegisterClientScriptBlock 方法注册的 Javascript

asp.net - 使用SqlDataSource或ObjectDataSource时如何关闭连接/数据读取器

javascript - AngularJS:如何在页面完全加载之前显示预加载或加载?

javascript - ng2-ckeditor 在 angular2 应用程序中不起作用?为什么?

javascript - 什么时候可以将属性附加到窗口?

javascript - 捕获浏览器关闭事件

javascript - 编辑每一行的数据表问题