是否可以使用谓词表达式作为HTTPGET请求(对mvc api控制器)的参数?
背景:我试图建立一个汽车租赁web应用程序。使用MSsql for db, EntityFramework(代码优先),(通用)CRUD函数和MVC API控制器的存储库。
我的目标是通过api控制器使用谓词linq表达式发送查询到db。代码:
存储库:
public IQueryable<T> Search<T>(Expression<Func<T, bool>> predicate) where T : class, IDataEntity
{
return _context.Set<T>().Where(predicate);
}
api get(predicate表达式参数) function:
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);
}
}
client HTML angular/jq ajax request:
$http.get("/api/CarApi"+"??????",{params:{ ??????? }})
.success(function (result) {
$scope.filteredCarsList = result;
...
})
.error(function (result) {
...
});
(我使用agulars $http ajax请求,类似于$.getJSON)
是否有可能通过ajax (get)请求发送谓词表达式到期望获得linq表达式作为参数的api控制器?
如果有,怎么做?如果不是,什么是正确/适当的方式来实现我的目标?
我不确定这对你是否有用,但你可以使用动态Linq库。通过这种方式,您可以轻松地在运行时构造查询并使用字符串进行查询。
更多信息请点击这里