【问题标题】:Get request to api with predicate expression as a parameter以谓词表达式为参数获取对 api 的请求
【发布时间】:2015-07-28 06:02:28
【问题描述】:

是否可以使用谓词表达式作为 HTTPGET 请求(到 mvc api 控制器)的参数。

背景:我正在尝试构建一个汽车租赁网络应用程序。 使用 MSsql for db、EntityFramework(代码优先)、(通用)CRUD 函数和 MVC API 控制器的存储库。

我的目标是使用谓词 linq 表达式通过 api 控制器向 db 发送查询。 代码:

存储库:

public IQueryable<T> Search<T>(Expression<Func<T, bool>> predicate) where T : class, IDataEntity
    {
        return _context.Set<T>().Where(predicate);
    }

api get(谓词表达式参数)函数:

public HttpResponseMessage Get(Expression<Func<Car, bool>> predicate)
    {
        using (IRepository Manager = Factories.Factory.GetRepository())
        {
            var CarList = Manager.Search<Car>(predicate)
                .Select(x => new CarDTO()
                {
                    ...
                })
                .ToList();
            return Request.CreateResponse<List<CarDTO>>(HttpStatusCode.OK, CarList);
        }
    }

客户端 html angular/jq ajax 请求:

$http.get("/api/CarApi"+"??????",{params:{ ??????? }})
            .success(function (result) {
                $scope.filteredCarsList = result;
                ...
            })
            .error(function (result) {
                ...
            });

(我使用 agulars $http 进行 ajax 请求,类似于 $.getJSON)

是否可以通过 ajax (get) 请求向希望获取 linq 表达式作为参数的 api 控制器发送谓词表达式?

如果是这样,怎么做? 如果不是,实现我的目标的正确/适当方法是什么?

【问题讨论】:

标签: javascript asp.net-mvc linq entity-framework api


【解决方案1】:

我不确定这对您是否有用,但您可以使用Dynamic Linq Library。这样,您可以轻松地在运行时构造查询并使用字符串进行查询。

找到更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2018-08-15
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多